मैं उस तरह का मौजूदा टाइमस्टैम्प प्राप्त करना चाहता हूं: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
मैं उस तरह का मौजूदा टाइमस्टैम्प प्राप्त करना चाहता हूं: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
जवाबों:
डेवलपर्स ब्लॉग से:
System.currentTimeMillis()
मानक "दीवार" घड़ी (समय और तारीख) युग के बाद से मिलीसेकंड व्यक्त कर रहा है। दीवार घड़ी को उपयोगकर्ता या फोन नेटवर्क द्वारा सेट किया जा सकता है (देखें सेटक्रांति टाइममिल (लंबी) ), इसलिए समय पीछे की तरफ या अप्रत्याशित रूप से कूद सकता है। इस घड़ी का उपयोग केवल तब किया जाना चाहिए जब वास्तविक दुनिया की तारीखों और समय के साथ पत्राचार महत्वपूर्ण हो, जैसे कि कैलेंडर या अलार्म घड़ी के अनुप्रयोग में। अंतराल या बीता समय माप को एक अलग घड़ी का उपयोग करना चाहिए। आप उपयोग कर रहे हैं System.currentTimeMillis()
, को सुनने पर विचार करें ACTION_TIME_TICK
, ACTION_TIME_CHANGED
और ACTION_TIMEZONE_CHANGED
उद्देश्य प्रसारण पता लगाने के लिए जब समय बदल जाता है।
System.nanoTime()
लिए एक विकल्प है System.currentTimeMillis()
और यह कोई अप्रत्याशित उतार चढ़ाव है, और अवधि अंतर को मापने के लिए बनाया गया है।
System.nanoTime()
दीवार घड़ी के समय को प्रदर्शित करने के लिए उपयुक्त नहीं है। उस उद्देश्य के लिए, System.currentTimeMillis()
इसके बजाय का उपयोग करें ।
1320917972 1 जनवरी, 1970 को 00:00:00 UTC के बाद से सेकंड की संख्या का उपयोग करते हुए यूनिक्स टाइमस्टैम्प है। आप TimeUnit
इकाई रूपांतरण के लिए कक्षा का उपयोग कर सकते हैं - System.currentTimeMillis()
सेकंड से।
String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
आप SimpleDateFormat वर्ग का उपयोग कर सकते हैं :
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
वर्तमान समय की मोहर पाने के लिए नीचे दी गई विधि का उपयोग करें। यह मेरे लिए ठीक काम करता है।
/**
*
* @return yyyy-MM-dd HH:mm:ss formate date as string
*/
public static String getCurrentTimeStamp(){
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentDateTime = dateFormat.format(new Date()); // Find todays date
return currentDateTime;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
यहाँ एक मानव-पठनीय समय स्टाम्प है जो एक फ़ाइल नाम में इस्तेमाल किया जा सकता है, बस अगर किसी को उसी चीज की आवश्यकता होती है जो मुझे चाहिए:
package com.example.xyz;
import android.text.format.Time;
/**
* Clock utility.
*/
public class Clock {
/**
* Get current time in human-readable form.
* @return current time as a string.
*/
public static String getNow() {
Time now = new Time();
now.setToNow();
String sTime = now.format("%Y_%m_%d %T");
return sTime;
}
/**
* Get current time in human-readable form without spaces and special characters.
* The returned value may be used to compose a file name.
* @return current time as a string.
*/
public static String getTimeStamp() {
Time now = new Time();
now.setToNow();
String sTime = now.format("%Y_%m_%d_%H_%M_%S");
return sTime;
}
}
इन्हें कोशिश करें
time.setText(String.valueOf(System.currentTimeMillis()));
और टाइमस्टैम्प समय प्रारूप के लिए
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);
मुझे आधुनिक उत्तर में योगदान देना चाहिए।
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
अभी चल रहा है जब आउटपुट:
1543320466
जबकि 1000 से विभाजन कई लोगों के लिए एक आश्चर्य के रूप में नहीं आएगा, अपने स्वयं के समय के रूपांतरणों को बहुत तेजी से पढ़ने के लिए कठिन हो सकता है, इसलिए जब आप इससे बच सकते हैं तो यह एक बुरी आदत है।
Instant
मैं जिस क्लास का उपयोग कर रहा हूं वह java.time का हिस्सा है, आधुनिक जावा दिनांक और समय एपीआई। यह नए एंड्रॉइड वर्जन, एपीआई स्तर 26 और ऊपर पर अंतर्निहित है। यदि आप पुराने एंड्रॉइड के लिए प्रोग्रामिंग कर रहे हैं, तो आपको बैकपोर्ट मिल सकता है, नीचे देखें। यदि आप ऐसा नहीं करना चाहते हैं, तो जाहिर है, मैं अभी भी एक अंतर्निहित रूपांतरण का उपयोग करूंगा:
String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
System.out.println(ts);
यह सीलेकेज द्वारा उत्तर के समान है। आउटपुट पहले जैसा ही है।
हाँ, java.time पुराने और नए Android उपकरणों पर अच्छी तरह से काम करता है। इसके लिए बस कम से कम जावा 6 की आवश्यकता होती है ।
org.threeten.bp
सबपेकेज से दिनांक और समय की कक्षाओं का आयात करते हैं ।java.time
।java.time
पहली बार वर्णित किया गया था।java.time
जावा 6 और 7 का बैकपोर्ट (जेएसआर -310 के लिए थ्रीटेन)।मैं हिट्स के उत्तर का उपयोग करने का सुझाव देता हूं, लेकिन एक लोकेल प्रारूप जोड़ रहा हूं, यह है कि एंड्रॉइड डेवलपर्स कैसे अनुशंसा करते हैं :
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
return dateFormat.format(new Date()); // Find todays date
} catch (Exception e) {
e.printStackTrace();
return null;
}
यह कोड Kotlin संस्करण है। विचरण युग को समय देने के लिए अंतिम अंक में एक यादृच्छिक फेरबदल पूर्णांक जोड़ने के लिए मेरे पास एक और विचार है।
कोटलिन संस्करण
val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance
val deltaEpoch = oldEpoch - currentEpoch
मुझे लगता है कि इस कोड का उपयोग करना बेहतर होगा फिर एंड्रॉइड के संस्करण 26 या अधिक पर निर्भर करेगा
java.util.Date
,java.util.Calendar
औरTimestamp
अब कर रहे हैं विरासत, द्वारा का स्थान ले लिया java.time कक्षाएं। जावा- टाइम की अधिकांश कार्यक्षमता थ्री-बैक-बैकपोर्ट परियोजना में जावा 6 और जावा 7 में बैक-पोर्ट की गई है। इसके अलावा तीनटैनबप प्रोजेक्ट में पहले के एंड्रॉइड के लिए अनुकूलित । देखें कि थ्रीटेनाब का उपयोग कैसे करें… ।