我有以毫秒为单位的时间来完成某项任务,我想以小时:分钟:秒格式显示它
下面我给出2种方式,这是执行的结果:给定longTime = 18624,结果我们得到strTime1 = "03:00:18", strTime = "00:18"
第一种方法中的 3 小时从何而来?
public static String getStrTime(long longTime){
// 1 способ
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
String strTime1 = df.format(longTime);
// 2 способ
long time = longTime/1000;
String strTime;
int ch = (int) time/(60*60);
int min = (int) (time-ch*60*60)/60;
int s = (int) time-ch*60*60 - min*60;
if (ch>0) {
strTime = "" + ((ch>9)?"":"0") + ch + ":" + ((min>9)?"":"0") + min + ":" + ((s>9)?"":"0") + s;
} else {
strTime = "" + ((min>9)?"":"0") + min + ":" + ((s>9)?"":"0") + s;
}
return strTime;
}
不同之处在于,在第二种情况下,您只需计算给定毫秒数内有多少秒/分钟/小时,而在第一种方式中,您将Unix 纪元时间转换为日期时间,计算机的默认时区是已使用(与格林威治标准时间不同三个小时)。
如果您还在输出格式中添加日期(例如
"dd.MM.YYYY HH:mm:ss"),您将看到在第一种情况下,日期是 1970 年 1 月 1 日。