मुझे पूरी तरह से यकीन नहीं है कि आप "वर्तमान मिलीसेकंड" से क्या मतलब है, लेकिन मुझे लगता है कि यह "युग," अर्थात् 1 जनवरी, 1970 यूटीसी के बाद से मिलीसेकंड की संख्या होगी।
आप अवधि के बाद मिलीसेकेंड की संख्या जानना चाहते हैं तो अभी, तो का उपयोग System.currentTimeMillis()
के रूप में Anubian Noob बताया गया है । यदि ऐसा है, तो ऐसा करने के लिए नए java.time API में से किसी का उपयोग करने का कोई कारण नहीं है।
हालाँकि, हो सकता है कि आपके पास पहले से ही LocalDateTime
या कहीं से एक समान वस्तु है और आप इसे युग के बाद से मिलीसेकंड में बदलना चाहते हैं। ऐसा सीधे तौर पर करना संभव नहीं है, क्योंकि LocalDateTime
वस्तुओं के परिवार के पास इस बात की कोई धारणा नहीं है कि वे किस समय क्षेत्र में हैं। इस प्रकार समय क्षेत्र की जानकारी को युग के सापेक्ष समय की आपूर्ति करने की आवश्यकता होती है, जो यूटीसी में है।
मान लीजिए कि आपके पास LocalDateTime
ऐसा है:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
आपको समय क्षेत्र की जानकारी देने की आवश्यकता है, ए ZonedDateTime
। मैं लॉस एंजिल्स के समान समय क्षेत्र में हूं, इसलिए मैं ऐसा कुछ करूंगा:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
बेशक, यह समय क्षेत्र के बारे में धारणा बनाता है। और ऐसे किनारे मामले हैं जो हो सकते हैं, उदाहरण के लिए, यदि स्थानीय समय डेलाइट सेविंग टाइम (समर टाइम) संक्रमण के पास एक समय का नाम देता है। आइए इन सब को अलग करें, लेकिन आपको यह जानना चाहिए कि ये मामले मौजूद हैं।
वैसे भी, यदि आप एक वैध प्राप्त कर सकते हैं, तो आप इसे ZonedDateTime
युग के बाद से मिलीसेकंड की संख्या में बदल सकते हैं, जैसे:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?