【问题标题】:How to fix error about formatting date in Java? [duplicate]如何修复有关在 Java 中格式化日期的错误? [复制]
【发布时间】:2021-09-01 13:23:57
【问题描述】:

我目前有一个以这种格式返回日期的 API:

1607474368095

但我需要它的格式为dd-MM-yyyy HH:mm:ss

我尝试用 LocalDateTimebut 解析它失败了。

我尝试执行getDate(),但它告诉我它已被弃用。

目前,我不知道用这种格式解析给定日期的任何方法。

【问题讨论】:

标签: java date


【解决方案1】:

提供的日期是 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 中做得更好。
  • 我会考虑您评论的所有内容。我确实使用 Java 1.8 版本,但如果我使用更高版本,那么我将遵循其他建议。
  • DateTimeFormatter 和 java.time 是在 Java 8 中引入的。Java 9 中有一些小的改进。
【解决方案2】:

只需在其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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2012-06-18
    • 2013-01-31
    • 2021-03-21
    • 2011-02-21
    相关资源
    最近更新 更多