关于datetime:解析String到Date时间戳java

parse String to Date timestamp java

本问题已经有最佳答案,请猛点这里访问。

我有一个来自Json的String,就像这个2015-05-07T17:00:00Z

我用Eclipse来构建android应用程序

我怎么解析它到日期? 我不知道什么是"T"和"Z"。

我通常会像这样转换一个日期..但是如何使用"2015-05-07T17:00:00Z"之类的字符串?

或者我必须使用拆分来分割" -","T",":"和"Z"?

1
2
3
Date today = new Date()
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy")
Date todayf = formatter.format(today)


Z是UTC时间。 T是用于将日期与时间分开的文字。 如果你的字符串总是有一个"Z",那么使用:

1
2
3
4
SimpleDateFormat formatter = new SimpleDateFormat(
   "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date todayf = formattter.format(today);

更多这里


如果以下代码适合您,请告诉我:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public static void main(String[] args) {
        Date date = parseJSONDateTime("2015-05-07T17:00:00Z");
        System.out.println(date);
    }

    public static Date parseJSONDateTime(String jsonDateString) {
        if (jsonDateString == null) return null;
        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
        if (jsonDateString.contains("T")) jsonDateString = jsonDateString.replace('T', ' ');
        if (jsonDateString.contains("Z")) jsonDateString = jsonDateString.replace("Z","+0000");
        else
            jsonDateString = jsonDateString.substring(0, jsonDateString.lastIndexOf(':')) + jsonDateString.substring(jsonDateString.lastIndexOf(':')+1);
        try {
            return fmt.parse(jsonDateString);
        }
        catch (ParseException e) {
            e.printStackTrace(); return null;
        }
    }

此代码将删除T并将Z替换为+0000,然后相应地解析日期。