将毫秒数或两个日期类型数转换为天小时分秒的方法,在进行时间段计算时应该经常用到。
记得有一道ACM题就是从一个计时方法A转换为另一个计时方法B,思路如下:总时间不会变,1s就是1s,只不过小时、分钟、天等包含的秒数不一样,所以先把A转换为总秒数sumSec,然后用sumSec得出B下的时间;很简单吧,我们协会没人想出来,我一直哦在思考原因,是不是因为学习学的没了创造性。
关于格式化Date类型的问题不在本文讨论范围之内,请读者自行查阅。
/**
*
* @param 要转换的毫秒数
* @return 该毫秒数转换为 * days * hours * minutes * seconds 后的格式
* @author fy.zhang
*/
public static String formatDuring( long mss) {
long days = mss / ( 1000 * 60 * 60 * 24 );
long hours = (mss % ( 1000 * 60 * 60 * 24 )) / ( 1000 * 60 * 60 );
long minutes = (mss % ( 1000 * 60 * 60 )) / ( 1000 * 60 );
long seconds = (mss % ( 1000 * 60 )) / 1000 ;
return days + " days " + hours + " hours " + minutes + " minutes "
+ seconds + " seconds " ;
}
/**
*
* @param begin 时间段的开始
* @param end 时间段的结束
* @return 输入的两个Date类型数据之间的时间间格用* days * hours * minutes * seconds的格式展示
* @author fy.zhang
*/
public static String formatDuring(Date begin, Date end) {
return formatDuring(end.getTime() - begin.getTime());
}
```
public static void main(String[] args) throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
String date1 = "2001-01-01 08:12:01";
String date2 = "2001-01-01 08:11:06";
// Date d1 = new Date();
Date d1 = sdf.parse(date1);;
Date d2 = sdf.parse(date2);
long time = (d1.getTime()-d2.getTime())/1000;
long time1 = (d1.getTime()-d2.getTime()) / ( 1000 * 60 * 60 * 24 );
System.out.println(new Date());
System.out.println("时间差:" + time);
System.out.println("时间差:" + time1);
}