2013-10-30 7 views
8

मैंने समय अंतर प्राप्त करने के लिए नीचे जावा कोड चलाया है।yyyy-MM-dd hh का उपयोग करके पार्स किए गए दिनांकों में अप्रत्याशित अंतर: मिमी: एसएस प्रारूप

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.TimeZone; 


public class Test 
{ 
    public static SimpleDateFormat simpleDateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
    public static Date date1,date2; 
    public static long diff; 
    public static String TAG ="DateConversion"; 
    public static Calendar cal1,cal2; 

    public static void main(String a[]) 
    { 
     checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 11:15:00"); 
     checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 12:15:00"); 
     checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 13:15:00"); 
    } 

    public static void checkTimeDifference(String strDate,String checkDate) 
    { 
     try 
     { 
      simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
      date1 = simpleDateFormat.parse(strDate); 
      date2 = simpleDateFormat.parse(checkDate); 

      //in milliseconds 
      diff = date2.getTime() - date1.getTime(); 
      System.out.println("Difference : "+diff); 
      long diffSeconds = diff/1000 % 60; 
      long diffMinutes = diff/(60 * 1000) % 60; 
      long diffHours = diff/(60 * 60 * 1000) % 24; 
      long diffDays = diff/(24 * 60 * 60 * 1000); 
      System.out.println(diffDays  + " days, "); 
      System.out.println(diffHours + " hours, "); 
      System.out.println(diffMinutes+ " minutes, "); 
      System.out.println(diffSeconds+ " seconds."); 
     } 
     catch (Exception e) 
     { 
      System.out.println(""+e); 
     } 
    } 
} 

उपरोक्त कार्यक्रम के उत्पादन में है।,

Difference : 3600000 
0 days, 
1 hours, 
0 minutes, 
0 seconds. 
Difference : -36000000 
0 days, 
-10 hours, 
0 minutes, 
0 seconds. 
Difference : 10800000 
0 days, 
3 hours, 
0 minutes, 
0 seconds. 

अपनी वापसी शून्य मूल्य जब "checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 12:15:00");"

क्यों अपनी वापसी शून्य से मूल्य और यह कैसे हल करने के लिए क्रियान्वित?

उत्तर

9

यह समस्या है:

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss") 

hh यहाँ का अर्थ है "12 घंटे घंटे दिन-का-" इसलिए 12 आधी रात का मतलब है जब तक कि वहाँ कुछ संकेत मिलता है कि यह 12 PM पर होना है। 13 का आपका मान केवल काम करता है क्योंकि पार्सर एक लचीला मोड में है। आप चाहते हैं:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 

मैं भी दृढ़ता से, तुम वैसे भी इस कार्य के लिए Joda Time उपयोग करने के लिए सलाह देते हैं कि के रूप में यह है कि यह एक बहुत सरल बना देता है।

3

SimpleDateFormat पैटर्न yyyy-MM-dd HH:mm:ss को बदलकर समस्याओं को हल करता है।

ऐसा इसलिए होता है क्योंकि yyyy-MM-dd hh:mm:ss मामले में, 12 का मूल्यांकन 0 के रूप में किया जाता है।

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

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