This question already has answers here:
Parsing ISO 8601 date format like 2015-06-27T13:16:37.363Z in Java [duplicate]
                                
                                    (2个答案)
                                
                        
                3年前关闭。
            
        

我得到这样的GMT格式的时间字符串值:“ 2000-01-01T12:00:00.000Z”,我想将其转换为某种可读的日期/时间格式。我不知道该怎么做

我正在使用以下代码,但似乎无法正常工作

        schedules = matrix.get("schedules").getAsJsonArray();
        schedules_array = schedules.get(0).getAsJsonObject();
        final String open = schedules_array.get("open").getAsString();

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        try {
            Date date = format.parse(open);
            Log.d("OPEN", String.valueOf(date));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

最佳答案

首先,由于您的输入以毫秒为单位,因此请修复格式字符串:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");


然后,您有两个选择:


在调用parse()之前添加以下语句:

format.setTimeZone(TimeZone.getTimeZone("UTC"));

更改格式以在输入字符串中使用时区:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");



我建议第二个。

08-18 20:33