将毫秒格式化为 SimpleDate 格式时,我遇到一个奇怪的结果:
输出是:
Start date time: 11/06/30 09:45:48:970
End date time: 11/06/30 09:45:52:831
Execution time: 01:00:03:861
Script:
long dateTimeStart = System.currentTimeMillis();
// some script execution here
long dateTimeEnd = System.currentTimeMillis();
"Start date time: " + GlobalUtilities.getDate(dateTimeStart, "yy/MM/dd hh:mm:ss:SSS");
"End date time: " + GlobalUtilities.getDate(dateTimeEnd, "yy/MM/dd hh:mm:ss:SSS");
"Execution time: " + GlobalUtilities.getDate((dateTimeEnd - dateTimeStart), "hh:mm:ss:SSS");
Method:
public static String getDate(long milliseconds, String format)
{
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(milliseconds);
}
知道为什么执行时间值如此之差吗?应该是 00:00:03:861,而不是 01:00:03:861
Thanks
因为您将时差转换为日期。
详细来说,这正是发生的情况:
- SimpleDateFormat.format(long milliseconds) 计算日期:Unix 出生时间 + 毫秒。
- 这个时间也根据与GMT的时差进行调整。
- 有了这两个信息,你就会得到奇怪的结果。要验证上述信息,您可以在日期中添加日、月和年。
不幸的是,您可以通过手动转换时间来修复它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)