java - ISO 时间出现意外输出 (8601)

标签 java date iso8601

Date now = new Date();
long timeInterval = now.getTime() - (15705 * 24 * 60 * 60 * 1000L);
long hours = timeInterval / (60 * 60 * 1000L);
LOG.debug(String.format("current date:%s, timeInterval:%d,hours:%d",now.toString(),timeInterval, hours));

系统打印结果为(15705表示自1970年代以来的天数):

12/12/31 22:06:47 DEBUG stat.TimeTest: current date:Mon Dec 31 22:06:47 CST 2012, timeInterval:50807153, hours:14

您可以看到当前时间是 21 小时,但结果显示为 14 小时。

最佳答案

Mon Dec 31 22:06:47 CST 2012 采用 GMT 时间表示为 Mon Dec 31 14:06:47 2012,这是开始时使用的时区属于这个时代。

换句话说,now.getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 并且您使用不同时区以来的毫秒数。

关于java - ISO 时间出现意外输出 (8601),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14102593/

相关文章:

php - Ebay API ISO 8601 持续时间格式到时间戳

带有时区偏移量而不是 Z 值的 MySQL ISO 8601 日期

date - 是否有比 UTC 更 "Date"的替代 "ambiguous"数据类型?

datetime - spring boot Joda DateTime 序列化

java - android 用相机拍摄多张图像

java - 根据偏移量和 DST 偏移量确定时区

java - < 和 > 是什么意思,比如 implements Comparable<BigInteger>?

java - Android 蓝牙发现 API 无法在 Android 6.0 上运行

java - 如何比较Java中的两个不同日期时间段?

java - 返回另一个类的时间