如何将日期值“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