我正在尝试将日期转换为字符串,但转换时将2018年更改为2019年。
我尝试了不同的日期,它可以工作。它仅在2018年12月30日和12月31日失败。
SimpleDateFormat fmt = new SimpleDateFormat("YYYY-MM-dd");
Date date = fmt.parse("2018-12-30");
String date2 = fmt.format(date);
预期结果:2018-12-30
实际结果:2019-12-30
答案 0 :(得分:7)
大写YYYY
表示一周中的年份,而不是日历年(小写yyyy
)。
所以您看到的是功能,而不是错误。根据{{1}}使用的一周的定义,2018年的第二天至最后一天是2019年的第一周。该定义因SimpleDateFormat
而异。
您使用的是可怕的日期时间类,而这些类早已被JSR 310中定义的现代 java.time 类取代了。
Locale
LocalDate
类适合您的字符串输入。
LocalDate
答案 1 :(得分:1)
在哪里设置sdf?只需使用fmt
,它将正常工作。尝试关注。
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
Date date = fmt.parse("2018-12-30");
String date2 = fmt .format(date);
答案 2 :(得分:1)
您无需再次使用SimpleDateFormat
格式化日期。只需使用如下。
所需日期格式:2019年12月30日
指定的适当日期格式为: yyyy.MM.dd (yyyy:表示全年)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse("2018-12-30");
String sDate = simpleDateFormat.format(date);