我在运行一些代码时遇到了一个奇怪的错误。这是一个展示相同的简单版本。
$(".date:contains('Mon'), .date:contains('Tue'), .date:contains('Wed'), .date:contains('Thu'), .date:contains('Fri'), .date:contains('Sat'), .date:contains('Sun')").html(function(i, text) {
return text.replace(/Mon/g, 'H')
.replace(/Tue/g, 'K')
.replace(/Wed/g, 'Sz')
.replace(/Thu/g, 'Cs')
.replace(/Fri/g, 'P')
.replace(/Sat/g, 'Szo')
.replace(/Sun/g, 'V');
});
这返回了以下结果
public class DateTest {
public static void main(String[] args) {
LocalDate decLast = LocalDate.of(2015, 12, 31);
LocalDate novLast = LocalDate.of(2015, 11, 30);
LocalDate octLast = LocalDate.of(2015, 10, 31);
System.out.println(decLast+" "+novLast+" "+octLast);
System.out.println(decLast.format(DateTimeFormatter.ofPattern("dd M YY"))+" "
+novLast.format(DateTimeFormatter.ofPattern("dd M YY"))+" "
+octLast.format(DateTimeFormatter.ofPattern("dd M YY")));
}
}
不知何故,2015年12月31日已转换为2016年12月31日。 我写了一个for循环来做同样的不同年份,发现多年来有变化。 12月26日以下的任何日期都不存在该错误。这是一个错误还是我错过了什么?
答案 0 :(得分:9)
大写Y
是" week based year",您正在寻找小写y
。
来自链接的维基百科文章(我强调):
ISO周编号年(也称非正式ISO年)有52或53周。那是364或371天而不是通常的365或366天。额外的一周在这里称为闰周,尽管ISO 8601不使用该术语。周从星期一开始。一年的第一周是包含一年中第一个星期四的一周(因此,总是包含1月4日)。 ISO周年编号因此在接近1月1日的某些日子稍微偏离了格里高利。
[...]
例如,2014年12月29日是ISO 2015-W1-1,即2015年而不是2014年。
比照。还有:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html