【问题标题】:Date format of 22nd April 2016? [duplicate]2016 年 4 月 22 日的日期格式? [复制]
【发布时间】:2016-04-22 06:23:53
【问题描述】:

日期的日期格式是什么,例如:
2016 年 4 月 1 日
2016年4月3日
2016 年 4 月 22 日

是否有任何 API 可以解析这样的日期?

编辑:重复的问题不包含任何关于解析包含 1(st)、2(nd)、3(rd) 的日期的答案。我不知道如何在 1 日解析 st,在 2 日解析 nd,在 3 日解析 rd .

【问题讨论】:

  • 谢谢,这些问题也很有帮助。
  • 请参阅this example 以了解如何使用我的 API (Time4J)。

标签: java date datetime


【解决方案1】:

问题在于 Java 不理解 ordinal indicator 后缀、第 1、第 2、第 3 等。您首先需要删除它,然后将其传递给 DateFormat。

我还建议确保您的语言环境设置正确,因为“April”将是不同语言的不同字符串,这会影响您软件的地理可移植性。

public static void main(String[] args) throws ParseException {
    System.out.println(parseWithOrdinals("1st April,2016"));
    System.out.println(parseWithOrdinals("3rd April,2016"));
    System.out.println(parseWithOrdinals("22nd April,2016"));
}

private static Date parseWithOrdinals(String date) throws ParseException {
    DateFormat format = new SimpleDateFormat("dd MMM,yyyy", Locale.UK);
    String corrected = date.replaceFirst("(\\d+)+.*\\s(.*)", "$1 $2");
    return format.parse(corrected);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多