ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-09-28 06:03:56  阅读:306  来源: 互联网

标签:java java-8 date date-format


参见英文答案 > 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有