2012-09-24 72 views
1

我必须计算两个日期之间的差异。这里是我的代码:如何获得两个日期之间的差异

 System.out.println("date1 "+date1); 
     System.out.println("date2 "+date2); 

     totalDifference=date2.getSeconds()-date1.getSeconds(); 

     System.out.println("Total Difference is"+totalDifference); 

,我现在面临的问题是,结果是0:

09-24 17:24:53.839: I/System.out(9317): date1 Wed Aug 15 00:00:00 GMT+05:30 2012 
09-24 17:24:53.839: I/System.out(9317): date2 Mon Sep 24 17:24:00 GMT+05:30 2012 
09-24 17:24:53.839: I/System.out(9317): Total Difference is 0 

我做错了吗?

感谢大家解决方案和其他宝贵的资源,请帮助我解决这个问题。 嗨,假设我输入8月31日23:59:00和下次日期9月1日00:02:00,我需要将记录显示为1天。请帮我解决这个问题

+0

也期待在这个问题和答案:http://stackoverflow.com/questions/2689379/how-to-get-a-list-of-dates-between-two-dates-in-java? rq = 1乔达时间可以帮助你在这种情况下。 – Averroes

+0

这是在这里回答http://stackoverflow.com/questions/5351483/calculate-date-time-difference-in-java。你得到的结果为0,因为你定义的两个日期都是00. – Nejc

+0

用getTime()替换getSeconds() –

回答

1

getSeconds()返回日期的第二, 所以在你的examaple,

DATE1周三08月15日00:00 : GMT + 05:30 2012

DATE2星期一年09月24 17点24: GMT + 05:30 2012

在这两种情况下,日二是0.如果你想的不同,你有

Android/Java - Date Difference in days

+0

谢谢队友:)嘿,如果我输入8月31日23:59:00和下一次日期1月00:02:00,我需要显示reocrd为1天。请帮我这个 – onkar

+0

有几个选项, 你可以使用getDay()来获取当天的“数字”。因此,在你的例子中,你会得到31和1.如果它们不同,就把它们和现在比较一下。 – Jram

+0

getDay()给出当月的天数 – onkar

1

date.getSeconds()方法返回那个日期对象的秒数。

你的情况,这两个日期都00秒如此之差为0

你将不得不使用date.getTime()

0

您可以在java.util.Date上使用getTime()方法获取以毫秒为单位的日期,并使用该方法找出两个java.util.Date变量之间的差异,以获得更精确的差异。

0

此方案的最佳示例为here。它包含了像

Calendar calendar1 = Calendar.getInstance(); 
    Calendar calendar2 = Calendar.getInstance(); 
    calendar1.set(2007, 01, 10); 
    calendar2.set(2007, 07, 01); 
    long milliseconds1 = calendar1.getTimeInMillis(); 
    long milliseconds2 = calendar2.getTimeInMillis(); 
    long diff = milliseconds2 - milliseconds1; 
    long diffSeconds = diff/1000; 
    long diffMinutes = diff/(60 * 1000); 
    long diffHours = diff/(60 * 60 * 1000); 
    long diffDays = diff/(24 * 60 * 60 * 1000); 
    System.out.println("\nThe Date Different Example"); 
    System.out.println("Time in milliseconds: " + diff 
+ " milliseconds."); 
    System.out.println("Time in seconds: " + diffSeconds 
+ " seconds."); 
    System.out.println("Time in minutes: " + diffMinutes 
+ " minutes."); 
    System.out.println("Time in hours: " + diffHours 
+ " hours."); 
    System.out.println("Time in days: " + diffDays 
+ " days."); 

尝试最初Google的问题:)

0

的例子只是根据你的下方作小修改的代码中看到。

package com.datediff; 

import java.util.Calendar; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class DateDiffActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Calendar thatDay = Calendar.getInstance(); 
    thatDay.set(Calendar.DAY_OF_MONTH,24); 
    thatDay.set(Calendar.MONTH,7); // 0-11 so 1 less 
    thatDay.set(Calendar.YEAR, 2012); 

    Calendar today = Calendar.getInstance(); 

    long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); 

    Toast.makeText(getApplicationContext(), diff+"", Toast.LENGTH_LONG).show(); 

    } 
} 
+0

嗨,假设我输入8月31日23:59:00和下次日期9月1日00:02:00,我需要将记录显示为1天。请帮我这个 – onkar

+0

简单的家伙, 只需检查秒,如果它大于1,然后显示为1天。 – Yuvi

+0

wat 8月31日23:59:00和下个日期8月31日23:59:02? – onkar