计算两个日期之间的经过时间,在不同的设备中给出不同的结果

时间:2012-09-19 09:50:22

标签: android time calendar

我试图从特定日期(毫秒)开始计算时间

在某些设备中,我得到了正确的结果 但是,在其他设备中我得到了错误的结果

这是我使用的代码:

public static void timeElapsedFromDate(long workingDate) 
{
    long diff = System.currentTimeMillis() - workingDate;

    long diffSeconds = diff / 1000;
    long diffMinutes = diffSeconds / 60;
    long diffHours = diffMinutes / 60;
    long diffDays = diffHours / 24;
    long diffWeeks = diffDays / 7;
    long diffMonth = diffDays / 30;
}

这不是测量时间的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

首先,diffMonth公式要求改进:从2月1日到3月1日通常是28天,但是一个月。从9月1日到9月31日,这是30天,但不到1个月。

有关diffDays的更微妙的问题:是不是第二天早上10点到10点之间的1天?

最后,不同设备如何提供不同的结果:System.currenTTimeMillis()返回当前时间与1970年1月1日午夜时间之间的差异(以毫秒为单位)。即使时钟也是如此在所有设备上都是正确的,它们可能有不同的时区设置。

答案 1 :(得分:0)

public int getElapsedTimeInDays(Date start,Date end){
    int days=(int)(start.getTime()-end.getTime())/(1000*60*60*24);
    return days;
}
public int getElapsedTimeInHours(Date start,Date end){
    int hours=(int)(start.getTime()-end.getTime())/(1000*60*60);
    return hours;
}
public int getElapsedTimeInMinutes(Date start,Date end){
    int minutes=(int)(start.getTime()-end.getTime())/(1000*60);
    return minutes;
}
public int getElapsedTimeInSecunds(Date start,Date end){
    int scunds=(int)(start.getTime()-end.getTime())/(1000);
    return secunds;
}

//Then you can use the codes like this:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd, hh:mm");
Date start = df.parse("2012-01-12, 09:35");
Date end = new Date();//this will be the curent date;

int day = getElapsedTimeInDays(start,end);