How to format Simple Date Formatter in Java as dd-3 letter month-yyyy?(如何在Java中将简单的日期格式化程序格式化为dd-3字母月-yyyy?)
问题描述
我有一个简单的日期格式化程序,格式如下:
private static final String DATE_FORMAT = "yyyy-MM-dd";
private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat(DATE_FORMAT);
//accessExpiryDate is a Date object
DATE_FORMATTER.format(accessExpiryDate);
并且将日期格式设置为yyyy-MM-dd。但我想设置日期格式,如"2019年6月1日"。日期+月份的前3个字母+年份。
我如何才能做到这一点?有没有一种简单的方法/方法/类,或者我应该编写我的自定义日期格式化程序方法?
推荐答案
java.time
不要使用Date
和SimpleDateFormat
。这些课程设计得很差,而且早就过时了,后者尤其出了名的麻烦。正如Jon Skeet所说,为了获得更好的体验,请转到现代Java日期和时间API java.time。
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d MMM u", Locale.ENGLISH);
LocalDate ld = LocalDate.of(2019, Month.JUNE, 1);
System.out.println(ld.format(dateFormatter));
此代码段的输出为:
包括2019年6月1日
M
for Month的许多格式模式字母可以生成数字或文本,具体取决于您在格式模式字符串中输入的字母数(DateTimeFormatter
和旧版SimpleDateFormat
都是如此)。因此MM
提供两位数的月份数字,而MMM
提供月份缩写(通常为三个字母,但在某些语言中可能更长或更短)。
如果您现在从旧版API获取一个无法更改或不想升级的旧式Date
对象,您可以这样转换它:
Date accessExpiryDate = getFromLegacyApi();
LocalDate ld = accessExpiryDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
其余部分和以前一样。现在,您已经开始使用现代API,并且可以按照自己的步调向这个方向迁移代码库。
链接:Oracle tutorial: Date Time说明如何使用java.time。
这篇关于如何在Java中将简单的日期格式化程序格式化为dd-3字母月-yyyy?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在Java中将简单的日期格式化程序格式化为


基础教程推荐
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13