abi*_*kay 0 java date simpledateformat
我有一个简单的日期格式化程序,格式如下:
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);
Run Code Online (Sandbox Code Playgroud)
它将日期格式设置为 yyyy-MM-dd。但我想格式化日期,例如"1 Jun 2019"。日 + 月份的前 3 个字母 + 年。
我怎样才能做到这一点?有没有一个简单的方法/方法/类或者我应该编写我的自定义日期格式化程序方法?
不要\xe2\x80\x99t 使用Date和SimpleDateFormat。这些类设计不佳且早已过时,其中后者尤其麻烦。正如 Jon Skeet 所说,为了获得更好的体验,请转向现代 Java 日期和时间 API java.time。
DateTimeFormatter dateFormatter\n = DateTimeFormatter.ofPattern("d MMM u", Locale.ENGLISH);\n LocalDate ld = LocalDate.of(2019, Month.JUNE, 1);\n System.out.println(ld.format(dateFormatter));\nRun Code Online (Sandbox Code Playgroud)\n\n该片段的输出是:
\n\n\n\n\n2019 年 6 月 1 日
\n
包括月份在内的许多格式模式字母M可以生成数字或文本,具体取决于您在格式模式字符串中放入的字母数量(这对于旧版DateTimeFormatter和旧版都是如此SimpleDateFormat)。SoMM为您提供两位数的月份数字,同时为MMM您提供月份缩写(通常为三个字母,但在某些语言中可能更长或更短)。
如果您从旧版 API 获取旧式Date对象,而您无法更改该对象,或者现在不想升级该对象,则可以像这样转换它:
Date accessExpiryDate = getFromLegacyApi();\n LocalDate ld = accessExpiryDate.toInstant()\n .atZone(ZoneId.systemDefault())\n .toLocalDate();\nRun Code Online (Sandbox Code Playgroud)\n\n其余的就和以前一样了。现在您\xe2\x80\x99 已经开始使用现代 API,并且可以按照自己的节奏朝这个方向迁移代码库。
\n\n链接: Oracle 教程:日期时间解释如何使用 java.time。
\n| 归档时间: |
|
| 查看次数: |
8844 次 |
| 最近记录: |