मेरे पास एक तार के अंदर एक तारीख है, "12-दिसंबर -2018" जैसा कुछ। मैं इसे मिलीसेकंड (लंबे) में कैसे बदल सकता हूं?
जवाबों:
SimpleDateFormat का उपयोग करना
String string_date = "12-December-2012";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date d = f.parse(string_date);
long milliseconds = d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
यह समय है जब कोई इस प्रश्न का आधुनिक उत्तर प्रदान करता है। 2012 में जब सवाल पूछा गया था, तो जवाब भी वापस पोस्ट किए गए थे और अच्छे जवाब थे। क्यों 2016 में पोस्ट किए गए उत्तर भी लंबे समय तक पुरानी कक्षाओं का उपयोग करते हैं SimpleDateFormat
और Date
मेरे लिए एक रहस्य से थोड़ा अधिक है। java.time
आधुनिक जावा तिथि और समय एपीआई जिसे JSR-310 के रूप में भी जाना जाता है, के साथ काम करने के लिए बहुत अच्छा है। आप एंड्रॉइड पर थ्रीटेनबप के माध्यम से इसका उपयोग कर सकते हैं, यह प्रश्न देखें : एंड्रॉइड प्रोजेक्ट में थ्रीटेनबप का उपयोग कैसे करें ।
अधिकांश उद्देश्यों के लिए मैं यूटीसी में दिन की शुरुआत के बाद से मिलीसेकंड का उपयोग करने की सलाह देता हूं । इन्हें प्राप्त करने के लिए:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
String stringDate = "12-December-2012";
long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
.atStartOfDay(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
System.out.println(millisecondsSinceEpoch);
यह प्रिंट:
1355270400000
यदि आपको कुछ विशिष्ट समय क्षेत्र में दिन की शुरुआत में समय की आवश्यकता होती है, तो उस समय क्षेत्र को UTC के बजाय निर्दिष्ट करें, उदाहरण के लिए:
.atStartOfDay(ZoneId.of("Asia/Karachi"))
जैसा कि अपेक्षित था यह थोड़ा अलग परिणाम देता है:
1355252400000
नोट करने के लिए एक और बिंदु, अपने को एक लोकेल की आपूर्ति करना याद रखें DateTimeFormatter
। मुझे अंग्रेजी आने में दिसंबर लगा, ऐसी अन्य भाषाएं हैं, जहां उस महीने को समान कहा जाता है, इसलिए कृपया अपने आप को उचित स्थान चुनें। यदि आप एक लोकेल प्रदान नहीं करते हैं, तो फ़ॉर्मेटर JVM की लोकेल सेटिंग का उपयोग करेगा, जो कई मामलों में काम कर सकता है, और तब एक दिन अनपेक्षित रूप से विफल हो सकता है जब आप एक अलग लोकेल सेटिंग वाले डिवाइस पर अपना ऐप चलाते हैं।
java.util.Date
डेट फॉर्मेटर का उपयोग करके पहले स्ट्रिंग को परिवर्तित करेंसबसे आसान तरीका तारीख का उपयोग कर दिनांक () और getTime () है
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
सरलीकृत के उपयोग से आप इसे आसानी से प्राप्त कर सकते हैं।
1) सबसे पहले स्ट्रिंग को जावा में बदलें।
2) तिथि से मिलीसेकंड की गणना प्राप्त करने के लिए गेटटाइम विधि का उपयोग करें
public class test {
public static void main(String[] args) {
String currentDate = "01-March-2016";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date parseDate = f.parse(currentDate);
long milliseconds = parseDate.getTime();
}
}
कोड के नीचे प्रयास करें
SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
Date d = null;
try {
d = f.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
long timeInMillis = d.getTime();