【发布时间】:2021-09-01 13:23:57
【问题描述】:
我目前有一个以这种格式返回日期的 API:
1607474368095
但我需要它的格式为dd-MM-yyyy HH:mm:ss
我尝试用 LocalDateTimebut 解析它失败了。
我尝试执行getDate(),但它告诉我它已被弃用。
目前,我不知道用这种格式解析给定日期的任何方法。
【问题讨论】:
我目前有一个以这种格式返回日期的 API:
1607474368095
但我需要它的格式为dd-MM-yyyy HH:mm:ss
我尝试用 LocalDateTimebut 解析它失败了。
我尝试执行getDate(),但它告诉我它已被弃用。
目前,我不知道用这种格式解析给定日期的任何方法。
【问题讨论】:
提供的日期是 unix 时间戳。在这里你首先需要做两件事:
a) 将其转换为日期
b) 将其解析为所需格式
public class MyDateFormatter {
public static final DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
public String formatDate(String date) {
return dateFormat.format(new java.util.Date((Long.valueOf(date))))
}
}
测试结果:
输入: 1607474368095
输出: 09-12-2020 06:09:28
【讨论】:
SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
DateTimeFormatter 和 java.time 是在 Java 8 中引入的。Java 9 中有一些小的改进。
只需在其SimpleDateFormat 实现中使用DateFormat 类:
Date date = new Date(1607474368095); // <- use your UNIX timestamp as Date constructor parameter
public final DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
dateFormat.format(date);
【讨论】: