【问题标题】:Java Date format timestamp [duplicate]Java日期格式时间戳[重复]
【发布时间】:2020-05-09 14:37:03
【问题描述】:

我正在尝试使用 .

转换日期和时间戳
public static void main(String args[]) {
list.add("2020-04-06T00:52:38+0000");
        list.add("2020-04-06T24:52:38+0000");
        list.add("2020-04-06T12:52:38+0000");

        Date createdTime = null;
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
        try {
             for (i =0; i < list.size(); i++) {
                    createdTime = df.parse(list.get(i));
                    System.out.print(i + " : "  + "Media Created_on : " + createdTime + "\n"); 
             }
        } catch (ParseException e) {
            e.printStackTrace();
        }
}

输出:

0 : Media Created_on : Sun Apr 05 20:52:38 EDT 2020
1 : Media Created_on : Mon Apr 06 20:52:38 EDT 2020
2 : Media Created_on : Sun Apr 05 20:52:38 EDT 2020

在这里它从 IST 转换为提前 4 小时的 EDT。那么对于最后一次迭代,为什么 12 小时相差 13 小时?

【问题讨论】:

  • 24:52:38 几点钟了?你在用30-hour clock吗?
  • 在上述问题的最后一句话中,我认为您的意思是“UTC 到 EDT”,相差 4 小时。
  • 我建议你不要使用DateDateFormatSimpleDateFormat。这些类设计不佳且早已过时,后两个尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time APIOffsetDateTimeDateTimeFormatter

标签: java simpledateformat date-formatting


【解决方案1】:

您的格式化程序声明中有一个错误。

你的配置:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");

它应该是什么,以满足您的预期结果:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

注意小时应该是 HH 而不是 hh

那么结果就是:

0 : Media Created_on : Sun Apr 05 20:52:38 EDT 2020
1 : Media Created_on : Mon Apr 06 20:52:38 EDT 2020
2 : Media Created_on : Sun Apr 06 08:52:38 EDT 2020

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2018-03-18
    • 2018-06-15
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多