【问题标题】:How to get in this date format? [duplicate]如何获得这种日期格式? [复制]
【发布时间】:2018-06-01 08:11:45
【问题描述】:

我从 JSON 中获取两个日期字段,如 May 22 12:05:41 UTC 20182018-05-22 12:05:41.512 这样的文本,但我必须更改为 MM-dd-yyyy HH:mm:ss 格式。

【问题讨论】:

  • 你已经尝试了什么?什么不工作?
  • 在发布问题之前请自行搜索。这个问题的变体已经被问过很多次了。
  • 您的接受率非常低,并且您的发帖历史记录中有一些问题您没有回复反馈请求。在这里接受答案不是强制性的,但这样做是有礼貌的。

标签: java date groovy


【解决方案1】:

要明确一点 - 日期/时间对象与格式无关。它们只是自固定时间点(通常是 Unix 纪元)以来经过的时间量的容器,因此您无法更改它们的格式本身

但是,您可以生成指定模式的String

在 Java 中处理日期/时间时,您应该使用 Java 8 中引入的日期/时间 API(或 ThreeTen 反向端口)

例如...

String date1 = "May 22 12:05:41 UTC 2018";
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
LocalDateTime ldt1 = LocalDateTime.parse(date1, format1);

String date2 = "2018-05-22 12:05:41.512";
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH);
LocalDateTime ldt2 = LocalDateTime.parse(date2, format2);

DateTimeFormatter format3 = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss", Locale.ENGLISH);
System.out.println(ldt1.format(format3));
System.out.println(ldt2.format(format3));

哪些输出...

05-22-2018 12:05:41
05-22-2018 12:05:41

由于您的其中一个输入具有与之关联的时区,因此应将其考虑在内

ZonedDateTime zdt = ZonedDateTime.parse(date1, format1);
LocalDateTime ldt1 = zdt.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();

哪个输出(针对我当前的位置)

05-22-2018 22:05:41

【讨论】:

    【解决方案2】:

    您可以使用此代码

    DateFormat format = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
    DateFormat inputFormat1 = new SimpleDateFormat("MMM dd HH:mm:ss z yyyy");
    DateFormat inputFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    String date1 = "May 22 12:05:41 UTC 2018";
    String date2 = "2018-05-22 12:05:41.512";
    System.out.println(format.format(inputFormat1.parse(date1)));
    System.out.println(format.format(inputFormat2.parse(date2)));
    

    【讨论】:

    • 请不要教年轻人使用陈旧而臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API 和它的DateTimeFormatter 中做得更好。
    猜你喜欢
    • 2019-12-02
    • 2017-09-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    相关资源
    最近更新 更多