【发布时间】:2017-09-19 12:29:42
【问题描述】:
我有这样的日期格式2016-11-25T09:29:10.588+01:00
我想将其转换为milliseconds,稍后在打印时我必须再次将毫秒转换为“yyyy-MM-dd HH:mm:ss.SSS”这种格式。
static FastDateFormat alarmDateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss.SSS");
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSXXX");
df1.setTimeZone(TimeZone.getTimeZone("UTC"));
String string1 = "2016-11-25T09:29:10.588+01:00";
Date result1 = df1.parse(string1);
long timeStamp = result1.getTime();
System.out.println("timeStamp : " +timeStamp);
String eventTime = alarmDateFormat.format(timeStamp);
System.out.println("AfterConverting : " + eventTime);
结果:
timeStamp : 1480062550588
AfterConverting : 2016-11-25 13:59:10.588
Date是正确的,但时间不同。我尝试将时区设置为“UTC”,但没有帮助。
请注意:在 Java 8 中,它可以与 Instant 等其他库以及我们在 Java 7 中想要的所有库一起正常工作。
【问题讨论】:
-
“我也尝试过设置时区“UTC”,但它没有帮助” - 它应该......如果你为
FastDateFormat设置时区,那就是。请说明您是如何尝试设置时区的。 -
@HarshaG 始终使用新信息更新(您可以编辑)您的问题。
-
那是在错误的格式化程序中设置时区...
-
“在 Java 8 中,它可以很好地与其他库(如 Instant)以及我们在 Java 7 中想要的所有库一起工作。”那么为什么不直接使用ThreeTen Backport?它在 Java 6 和 7 中提供现代 Java 日期和时间 API,包括
Instant等。 -
是的,您真的应该将 ThreeTen-Backport 添加到您的项目中。旧的遗留日期时间类是一团糟,令人困惑,设计糟糕。
标签: java datetime simpledateformat datetime-parsing