我试图从特定日期(毫秒)开始计算时间
在某些设备中,我得到了正确的结果 但是,在其他设备中我得到了错误的结果
这是我使用的代码:
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;
}
这不是测量时间的方法吗?
谢谢!
答案 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);