将带有毫秒和时区的字符串转换为Date

时间:2017-04-06 11:32:18

标签: java android android-studio android-date

我有这种格式的字符串: 2017-04-06T09:29:12.225Z

我需要使用日期格式我试过:

   private Date convertStringToDate(String dateString) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sssZ");
    Date convertedDate = new Date();
    try {
        convertedDate = dateFormat.parse(dateString);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return convertedDate;
}

但是它显示了Unparsable错误?

4 个答案:

答案 0 :(得分:2)

尝试毫秒应为大写 S

SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd'T'HH:mm:ss.SSSZ”);

答案 1 :(得分:1)

毫秒应为大写字母S,Z应为单引号:

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

答案 2 :(得分:1)

从Java 7开始,您可以使用

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

X代表 ISO 8601时区,可能只是Z(零时区)或类似-08,{{ 1}}或-0800。 另请参阅javadoc of SimpleDateFormat中的表格。

答案 3 :(得分:0)

尝试

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