2011-01-06 15 views
5

साथ लगभग समय अवधि मैं Joda पुस्तकालय का उपयोग कर रहा समय अवधि एक दिया टाइमस्टैम्प के बाद से पारित कर दिया पाने के लिए:Joda समय

public static String getTimePassedSince(Date initialTimestamp){ 

     DateTime initDT = new DateTime(initialTimestamp.getTime()); 
     DateTime now = new DateTime(); 
     Period p = new Period(initDT, now); 

     PeriodFormatter formatter = new PeriodFormatterBuilder() 
      .appendYears().appendSuffix(" year, ", " years, ") 
      .appendMonths().appendSuffix(" month, ", " months, ") 
      .appendDays().appendSuffix(" day, ", " days, ") 
      .appendHours().appendSuffix(" hour, ", " hours, ") 
      .appendMinutes().appendSuffix(" minute, ", " minutes, ") 
      .appendSeconds().appendSuffix(" second, ", " seconds") 
      .printZeroNever() 
      .toFormatter(); 

     return formatter.print(p); 
    } 

फ़ंक्शन दिया timestamps के लिए सही समय अवधि तार। उदाहरण के लिए:

3 minutes, 23 seconds 
1 hour, 30 minutes, 57 seconds 
1 day, 23 hours, 21 minutes, 19 seconds 

क्या कोई तरीका है कि मुझे सटीक के बजाय अनुमानित समय मिल सकता है? उदाहरण के लिए, यदि initialTimestamp के बाद से एक मिनट और 30 सेकंड बीत चुके हैं, तो यह केवल 1.5 minutes लौटाता है। इसी तरह, यदि एक घंटा और 35 मिनट बीत चुके हैं, तो यह 1 घंटे, 35 मिनट, xy सेकेंड के बजाय about 1.5 hours देता है।

मुझे पता है कि लौटाई गई स्ट्रिंग को पार्स और हेरफेर किया जा सकता है लेकिन मैं कुछ और परिष्कृत खोज रहा हूं।

उत्तर

1

मुझे लगता है कि आपको इसके लिए अपना स्वयं का फॉर्मेटर बनाना होगा, जो इस अवधि को देखता है और निर्धारित करता है कि आप इसे किस प्रारूप में प्रारूपित करना चाहते हैं, 63 सेकंड "1 मिनट" या 3 घंटे 48 मिनट के लिए कहें: "तीन घंटे"। मुझे लगता है जैसे आप केवल समय की सबसे बड़ी इकाई की रिपोर्ट करना चाहते हैं, और अधिक दानेदार लोगों को अनदेखा करना चाहते हैं। आपको राउंडिंग व्यवहार को परिभाषित करने और दिनों में समय प्रस्तुत करने की आवश्यकता होगी: "44 दिन पहले" या "एक महीने पहले" या "1 महीने और 2 सप्ताह पहले"।

मुझे किसी भी सामान्य उपयोगिता से अवगत नहीं है जो यह करता है, लेकिन मैंने किसी को भी नहीं देखा है।

+0

3 घंटे और 48 मिनट 4 घंटे होना चाहिए, क्योंकि यह 3:30 (या 3.5) पास है – jmateo

संबंधित मुद्दे