我想将给定的UTC字符串日期转换为UTC日期对象。 我得到这种格式的UTC字符串dd-MMM-yyyy hh:mm:ss.sssss aa 我想将此String对象转换为Date对象。 我试图通过将时区设置为“UTC”,它不工作SimpleDateFormat。想要将给定的UTC字符串对象转换为UTC日期对象
对我来说唯一的一件事是,将默认的JVM时区强制设置为UTC,而我不希望这会改变我在许多进程中使用的JVM时间。
请建议。
我想将给定的UTC字符串日期转换为UTC日期对象。 我得到这种格式的UTC字符串dd-MMM-yyyy hh:mm:ss.sssss aa 我想将此String对象转换为Date对象。 我试图通过将时区设置为“UTC”,它不工作SimpleDateFormat。想要将给定的UTC字符串对象转换为UTC日期对象
对我来说唯一的一件事是,将默认的JVM时区强制设置为UTC,而我不希望这会改变我在许多进程中使用的JVM时间。
请建议。
A java.util.Date
对象不包含时区信息,所以不存在“UTC Date
对象”之类的东西。 A java.util.Date
只不过是自01-01-1970,00:00:00格林尼治标准时间以来的几毫秒内的一个包装,因此您可以看到一个Date
物体指向“绝对”时间点,无论时区。
如果你想打印在一定的时区一个Date
对象(例如UTC),然后设置使用Date
格式化SimpleDateFormat
对象所需的时区:
Date now = new Date();
DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
// Prints the date in the UTC timezone
System.out.println(df.format(now));
如果您正在使用在Java 8中,使用新的java.time
API会更好,因为API的日期和时间比旧的java.util.Date
和java.util.Calendar
要好得多。例如,使用ZonedDateTime
如果希望知道UTC日期和时间:
DateTimeFormatter df = DateTimeFormatter.ofPattern("dd-MMM-yyyy hh:mm:ss.SSSSS a")
.withZone(ZoneOffset.UTC);
ZonedDateTime dateTime = ZonedDateTime.parse("31-May-2016 06:54:16.78000 AM", df);
如果您使用的是Java 7或以上,可以考虑使用Joda Time。
Jesper谢谢你的回复..我已经尝试了上面的代码..因为我的输出应该是java.util.Date对象,所以只要我将输出返回给此对象,它就会拾取JVM默认时区并添加到它。我的服务器时间在CEST,所以它给了我相当于CEST的日期。此外,我的Integartion服务器有JDK 1.7,我不能使用java.time,因为它随附更高的服务器版本,所以无法升级到JDK1.8。 –
'Date'没有时区。 –
总是发布您的代码,预期或期望的结果以及实际结果很有帮助。 – nateyolles
请在发布前彻底搜索Stack Overflow。 –