मुझे एक LocalTime को दूसरे से घटाने का एक शानदार तरीका खोजने में समस्या हो रही है, लेकिन कुछ सेकंड या मिनटों से नहीं, बल्कि बस यही:

LocalTime difference = now - before;

जाहिर है यह काम नहीं करेगा, इसलिए वास्तव में, मैं जो चाहता हूं, वह कुछ ऐसा है जो दो LocalTime में लेगा, और मुझे एक वापस देगा, इसलिए मैं निम्नलिखित कर सकता हूं:

00:01:42:519
00:02:13:217

00:00:30:698

मैंने निम्नलिखित कोशिश की है:

long seconds = before.until(now, ChronoUnit.SECONDS);

लेकिन जाहिर है कि मुझे केवल कुछ सेकंड मिलेंगे, ठीक है, इसलिए मैंने इसे बदल दिया:

long millis = before.until(now, ChronoUnit.MILLIS);
long seconds = before.until(now, ChronoUnit.SECONDS);
long minutes = before.until(now, ChronoUnit.MINUTES);
long hours = before.until(now, ChronoUnit.HOURS);

लेकिन तब मुझे एहसास हुआ कि यह केवल निर्दिष्ट इकाई में पूरे समय परिवर्तन की गणना करता है, बजाय उस इकाइयों के परिवर्तन के लिए "योगदान" के बजाय, यदि आप समझते हैं कि मेरा क्या मतलब है।

पीएस: मैंने कुछ प्रश्नों के लिए एसओ स्कैन किया है और वे एक ही चीज़ प्रतीत होते हैं, केवल एकवचन इकाई में पूरे अंतर को वापस दे रहे हैं। यदि यह एक डुप्लिकेट है, तो कृपया मुझे सही दिशा में इंगित करें!

कोई विचार?

3
user5549921 3 पद 2017, 10:57

3 जवाब

सबसे बढ़िया उत्तर

यह करना चाहिए:

LocalTime diff= t2.minusNanos(t1.toNanoOfDay());

https://ideone.com/3JB3U5

1
vandale 3 पद 2017, 11:09

लोकलटाइम के जावाडॉक को पढ़ना # तक (), मुझे यह समाधान मिला:

long differenceMillis = MILLIS.between(before, now);
0
Ridcully 3 पद 2017, 11:12
    Instant start = Instant.now();
        //your lengthy code here
    Instant end = Instant.now();
    long nanoDiff = end.getNano() - start.getNano();

मैंने यह उत्तर क्यों पोस्ट किया? बी/सी आप तत्काल कक्षा के साथ खेल सकते हैं और अपने प्रश्न के उत्तर के रूप में कई प्रकार के विभिन्न प्रारूप प्राप्त कर सकते हैं ...

0
zlakad 3 पद 2017, 14:34