【问题标题】:Date formatting in Java to a specific formatJava中的日期格式化为特定格式
【发布时间】:2021-04-30 14:16:38
【问题描述】:

我从开放 API 获取的日期是 2021-04-28。我想以这种方式格式化它:4/28/2021。以下是我尝试过的方法:

public String formatDateFetchedFromAPI(String transDate) {
    LocalDate apiDate = LocalDate.parse(transDate, DateTimeFormatter.BASIC_ISO_DATE);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yyyy");
    String actualDate = formatter.format(apiDate);
    return actualDate;
}

这会引发错误:

java.time.format.DateTimeParseException:无法在索引 4 处解析文本“2021-04-28”

如果我从开放 API 中提取的数据是 20210426,那么此方法可以正常工作并返回 4/28/2021。

【问题讨论】:

  • 您尝试解析的日期根本不是基本的 iso 格式。我建议查看官方文档:docs.oracle.com/javase/8/docs/api/java/time/format/…(查看 Predefined Formatters)-据我所知,您正在尝试使用“ISO 本地日期”格式解析日期。
  • 谢谢。你分享的这个链接帮助我找到了解决方案,而不是使用基本的 iso 我使用了 iso loca 日期。再次感谢!
  • 所谓的“开放 API”是什么(因为 OP 离开了大楼,其他人可能会插话)?
  • 请注意,您应该遵循 Java 命名约定:变量和方法名称以驼峰命名,因此不使用下划线。

标签: java date java-time


【解决方案1】:

您的日期看起来像 ISO_LOCAL_DATE 而不是 BASIC_ISO_DATE,因此您可以直接使用

LocalDate apiDate = LocalDate.parse(transDate);

没有DateTimeFormatter,因为LocalDate.parse默认使用ISO_LOCAL_DATE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2017-04-09
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多