Java 将日期字符串转换为UTC格式
我有一个从API返回的日期字符串。日期采用这种格式 2018-10-15T17:52:00Z 现在,我想把这个字符串转换成UTC日期格式。这是我用的代码Java 将日期字符串转换为UTC格式,java,android,android-date,date,Java,Android,Android Date,Date,我有一个从API返回的日期字符串。日期采用这种格式 2018-10-15T17:52:00Z 现在,我想把这个字符串转换成UTC日期格式。这是我用的代码 private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; try { String expiryDateString = "2018-10-15T17:52:00Z"; final SimpleDateFormat forma
private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
try {
String expiryDateString = "2018-10-15T17:52:00Z";
final SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT,Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
return formatter.parse(expiryDateString);
} catch (final ParseException e) {
return null;
}
此方法将日期返回为
2018年10月15日星期一美国东部时间13:52:00
我不能使用Java8函数。有没有办法不使用Java8方法将字符串转换为UTC日期时间
2018年10月15日星期一美国东部时间13:52:00
是date.toString()-date类的结果
日期解析正确,只是显示方式不同。
如果要检查解析是否正确,可以这样检查:
String expiryDateString = "2018-10-15T17:52:00Z";
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(expiryDateString);
assertEquals(expiryDateString, formatter.format(date));
访问“我想将此字符串转换为UTC日期格式”,即UTC日期格式。
Z
表示UTC时区。@Andreas如何将此UTC日期时间字符串转换为正确的UTC日期?您的代码已经在这样做了,因为java.util.date
始终是UTC日期。格式化UTC日期值以供显示时,将应用您看到的EDT
时区。有缺陷的是您的显示逻辑,而不是问题中的代码。请定义Java8方法。即使在较低的API级别上,您也可以使用java.time,这是Java8最早推出的现代java日期和时间API。它已经进行了后端口,并且后端口进一步适应了Android。您需要ThreeTenABP库,请参阅。您应该这样做,因为您使用的SimpleDateFormat
类不仅早已过时,而且还出了名的麻烦。现代的API非常好用。