2012-03-08 15 views
20

मैं कुल मिलीसेकंड की (नहीं मिली सेकंड के क्षेत्र) अवधि वस्तु उदाहरण से राशि प्राप्त करने की कोशिश कर रहा हूँ करने के लिए अवधि। मैंने कई रूपांतरणों की कोशिश की है, क्योंकि मुझे आसानी से इसे देने का कोई तरीका नहीं मिला।Joda समय, कुल मिली सेकंड के

क्या किसी को कभी भी इसकी आवश्यकता है और इसे पुनर्प्राप्त करने में कामयाब रहा है?

(मैं अपने पैच के लिए इस की जरूरत है, एक नकारात्मक अवधि यह पता लगाने की;। नकारात्मक मिली सेकंड = नकारात्मक अवधि)

उत्तर

14

आप नहीं एक Period से सीधे मिली सेकंड के प्राप्त कर सकते हैं, के बाद से महीनों और वर्षों जैसे क्षेत्रों चर रहे हैं मिलीसेकंड के मामले में।

इस काम को करने के लिए, आपको "बेसलाइन" तत्काल आपूर्ति करने की आवश्यकता है जिससे Period उस वास्तविक मिलीसेकंद अवधि की गणना कर सके।

उदाहरण के लिए, Period.toDurationFrom और Period.toDurationTo विधियां ऐसी बेसलाइन तत्काल लेती हैं, और Duration ऑब्जेक्ट की गणना करती हैं, जिसे आप मिलिस प्राप्त कर सकते हैं।

JavadoctoDurationFrom के लिए कहते हैं:

एक शुरुआत के तुरंत करने के लिए इस अवधि के रिश्तेदार की कुल मिलीसेकंड अवधि हो जाता है। यह विधि अवधि की गणना करने के लिए निर्दिष्ट क्षण में अवधि जोड़ती है।

एक अवधि की अवधि के रूप में एक तत्काल आपूर्ति की जानी चाहिए। उदाहरण के लिए, विभिन्न लंबाई महीनों के कारण, 1 महीने की अवधि मिलीसेकंड में 28 और 31 दिनों के बराबर के बीच भिन्न हो सकती है। इसी तरह, डेलाइट सेविंग कटओवर में आमतौर पर 23 और 25 घंटे के बीच भिन्नता हो सकती है।

तो आपको अपने आवेदन के लिए उपयुक्त आधारभूत तत्काल चुनने की आवश्यकता है।

+0

यह मिल गया: दिनांक समय शून्य = नए दिनांक समय (0); लंबी मिलिस = period.to अवधि से (शून्य) .getMillis(); – Droritos

+0

@DrorWeiss: यह अपेक्षाकृत छोटी अवधि के लिए ही काम करेगा। यदि आप एक महीने से अधिक अवधि का उपयोग करना शुरू करते हैं, तो यह आपको विकृत परिणाम दे सकता है। – skaffman

+0

मैंने इसका परीक्षण किया है .. अब तक अच्छा लग रहा है। हालांकि, मैं निगरानी रखूंगा। धन्यवाद ! ;) – Droritos

2

आप एक विशिष्ट समय यह प्लस() या ऋण() दिनांक समय वर्ग के तरीकों का उपयोग करके किया जा सकता है से मिली सेकंड के प्राप्त करना चाहते हैं।

उदा अब से मिली सेकंड के लिए हो रही

DateTime start = new DateTime(); //NOW 
DateTime end = start.plus(<your period>); 
long millis = end.getMillis() - start.getMillis(); 
संबंधित मुद्दे