Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将日期字符串转换为UTC格式_Java_Android_Android Date_Date - Fatal编程技术网

Java 将日期字符串转换为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

我有一个从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 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非常好用。