2010-10-18 15 views
31

मैंने वेब के चारों ओर विभिन्न तरीकों का प्रयास किया है लेकिन यह काम नहीं कर सका।सेकेंड में दो तिथियों के बीच एंड्रॉइड अंतर

Cursor cursor = sqlite.myDataBase.rawQuery("SELECT StartDate, EndDate FROM Tracks Where Id="+'"'+trackId+'"',null); 

SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date startDate = outputFormat.parse(cursor.getString(cursor.getColumnIndex("StartDate"))); 
Date endDate = outputFormat.parse(cursor.getString(cursor.getColumnIndex("EndDate"))); 

इस तरह से मैं दोनों तारीखों को अच्छे प्रारूप में प्राप्त करता हूं। अब मैं सेकंड में EndDate और Startdate के बीच का अंतर खोजना चाहता हूं।

कोई सलाह? धन्यवाद।

उत्तर

86

आप (1 जनवरी, 1970 के बाद से मिलीसेकेंड) एक लंबे में एक तारीख वस्तु को बदल सकते हैं, और फिर TimeUnit का उपयोग सेकंड की संख्या प्राप्त करने के लिए: चर के नाम -Corrected:

long diffInMs = endDate.getTime() - startDate.getTime(); 

long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMs); 

संपादित करें diffInMs जो दूसरी पंक्ति में diffInM (i) लिखा गया था।

4

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

Time t1 = new Time(); 
t1.setToNow(); 
Thread.sleep(1000); 

Time t2 = new Time(); 
t2.setToNow(); 

diff = TimeUnit.MILLISECONDS.toSeconds(t2.toMillis(true)-t1.toMillis(true)); 
5

कोशिश: -

public String twoDatesBetweenTime(String oldtime) 
    { 
     // TODO Auto-generated method stub 
     int day = 0; 
     int hh = 0; 
     int mm = 0; 
     try 
     { 
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      Date oldDate = dateFormat.parse(oldtime); 
      Date cDate = new Date(); 
      Long timeDiff = cDate.getTime() - oldDate.getTime(); 
      day = (int) TimeUnit.MILLISECONDS.toDays(timeDiff); 
      hh = (int) (TimeUnit.MILLISECONDS.toHours(timeDiff) - TimeUnit.DAYS.toHours(day)); 
      mm = (int) (TimeUnit.MILLISECONDS.toMinutes(timeDiff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeDiff))); 
     } 
     catch (ParseException e) 
     { 
      e.printStackTrace(); 
     } 
     if(day==0) 
     { 
      return hh + " hour " + mm + " min"; 
     } 
     else if(hh==0) 
     { 
      return mm + " min"; 
     } 
     else 
     { 
      return day + " days " + hh + " hour " + mm + " min"; 
     } 
    } 
संबंधित मुद्दे