java - Java SimpleDateFormat 显示的日期不正确
问题描述
private static final String LONG_DATE_PATTERN = "YYYY-MMM-dd hh:mm:ss a";
private static final SimpleDateFormat longDateFormat = new SimpleDateFormat(LONG_DATE_PATTERN);
public static String formatWith12HourClock(Date date) {
return longDateFormat.format(date);
}
这将为日期 2018-Dec-31 生成 2019-Dec-31 12:00:00 AM,这是不正确的。
解决方案
正如在其他答案中所说,您应该使用yyyy
而不是YYYY
. 如果您正在使用 java8 或更高版本,您还可以使用DateTimeFormatterBuilder
来避免原始模式,例如:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR_OF_ERA, 4, 19, SignStyle.EXCEEDS_PAD)
.appendLiteral("-")
.appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)
.appendLiteral("-")
.appendValue(ChronoField.DAY_OF_MONTH, 2)
.appendLiteral(" ")
.appendValue(ChronoField.CLOCK_HOUR_OF_AMPM, 2)
.appendLiteral(":")
.appendValue(ChronoField.MINUTE_OF_HOUR, 2)
.appendLiteral(":")
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.appendLiteral(" ")
.appendText(ChronoField.AMPM_OF_DAY, TextStyle.SHORT)
.toFormatter();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(formatter.format(localDateTime));
推荐阅读
- apache-spark - 使用 pyspark `map` 函数时如何忽略空列表?
- modelica - 使用 FluidPort 时有关 C_outflow[] 的错误
- php - 无法将特殊字符插入 MySQL 表
- r - 计算 100 个 MLE 以找到估计量的平均值
- php - base64_encode 的问题,它减慢了我的网站 php
- android - android 画布画线,两边都有指针结束的箭头。谁能帮帮我。?
- python - 配置解析器没有返回正确的变量 - 在单词周围省略 ( )
- php - 如何使用 PHP 每分钟向电报机器人发送通知?
- python - 使用列表的值更新嵌套字典
- c++ - C++ With Initializer List 一个东西,什么时候用普通的构造函数?