其他分享
首页 > 其他分享> > 如何将日期值“2017年5月26日”转换为“2017年5月26日”?

如何将日期值“2017年5月26日”转换为“2017年5月26日”?

作者:互联网

参见英文答案 > Parsing a date’s ordinal indicator ( st, nd, rd, th ) in a date-time string                                    4个
>            Parsing dates of the format “January 10th, 2010” in Java? (with ordinal indicators, st|nd|rd|th)                                    4个
是否有任何java库可用于解析语言特定的序数指示符/后缀?

我有如下日期值:2017年5月26日.我想将此转换为2017年5月26日.有人可以指导我怎么做?

解决方法:

您可以使用自定义日期格式将此格式直接解析为Java 8 LocalDate:

static final Map<Long, String> ORDINAL_DAYS = new HashMap<>();
static
 {
   ORDINAL_DAYS.put(1, "1st");
   .... more ....
   ORDINAL_DAYS.put(26, "26th");
   .... more ....
   ORDINAL_DAYS.put(31, "31st");
 }

static final DateTimeFormatter FORMAT_DAY_MONTH_YEAR = new DateTimeFormatterBuilder()
  .appendText(ChronoField.DAY_OF_MONTH, ORDINAL_DAYS)
  .appendLiteral(' ')
  .appendText(ChronoField.MONTH_OF_YEAR)
  .appendLiteral(' ')
  .appendText(ChronoField.YEAR)
  .toFormatter();


 String dateInString = "26th May 2017";

 LocalDate date = LocalDate.parse(dateInString, FORMAT_DAY_MONTH_YEAR);

这是使用DateTimeFormatter.appendText的版本,它接受用于映射日期字符串的映射.

为简洁起见,您需要填写我遗漏的ORDINAL_DAYS中的所有缺失条目.

标签:java,java-8,date,date-format
来源: https://codeday.me/bug/20190928/1826330.html