在Android开发中有时会需要换算两个指定日期格式时间的时间差,然后转换成自己所需。
示例:
DateFormat formart= newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//注意此处的日期格式、在上次开发中我没有在意日期格式与接口文档保持一致导致了一系列严重错误。此处日期格式是 以24小时制为基础。如果将HH换成hh,则变成12小时制,下面的计算代码也需要更改。
这里附上从网上查看的日期格式部分释义,还没来得急一个一个测试:
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在AbbreviatedDayNames中定义。
dddd 周中某天的完整名称,在DayNames中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在AbbreviatedMonthNames中定义。
MMMM 月份的完整名称,在MonthNames中定义。
y 不包含纪元的年份。不具有前导零。
yy 不包含纪元的年份。具有前导零。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。
h 12 小时制的小时。一位数的小时数没有前导零。
hh 12 小时制的小时。一位数的小时数有前导零。
H 24 小时制的小时。一位数的小时数没有前导零。
HH 24 小时制的小时。一位数的小时数有前导零。
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 秒。一位数的秒数没有前导零。
ss 秒。一位数的秒数有一个前导零。
f 秒的小数精度为一位。其余数字被截断。
try
{
Date date1 =formart.parse("2004-03-26 13:31:40");
Date date2 =formart.parse("2004-01-02 11:30:24");
long times= date1.getTime() -date2.getTime();//这样得到的差值是微秒级别
long days = times/ (1000 * 60* 60 * 24); //换算成天数
long hours =(times-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60); //换算成小时
long minutes =(times-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60); //换算成分钟
//根据自己所需要的进行换算,一定要注意日期格式。
}
catch (Exception e)
{
}