处理跨地区和文化差异的周编号标准化,一直是数据处理中的难题。例如,基督教文化中,一周的第一天是星期日,而编程语言中,周编号的起始点也各有不同(0或1)。这种不一致性,对数据分析师而言,可能造成严重歧义。
在 Apache DolphinScheduler 的应用中,这种日期处理问题在年末年初尤为突出。为避免日期格式歧义,建议严格遵循 ISO 8601 标准。
Java 8 及其后续版本已支持 ISO 8601 日期格式。其中,大写 Y 代表基于周的年份,小写 y 代表日历年。许多开发者常忽略大小写差异,导致在处理年末年初日期时出现错误。

参考: Java SE 11 DateTimeFormatter 文档
立即学习“Java免费学习笔记(深入)”;
ISO 8601 周及基于周的年份计算规则
- 一年中可能有 52 或 53 周。
- 一周完整周期为周一至周日。
- 星期一为一周第一天,星期日为第七天。
- 一年的第一周,包含该年第一个星期四。例如,2017年1月5日是2017年的第一个星期四,所以2017年1月2日至8日为2017年的第一周。
- 一年的最后一周,包含该年最后一个星期四。例如,2016年12月29日是2016年的最后一个星期四,所以2016年12月26日至2017年1月1日为2016年的最后一周。
- 基于周的年份指当前周所属的年份。例如:
- 2017年1月1日属于基于周的2016年。
- 2016年1月1日、2日和3日属于基于周的2015年。
- 2024年12月30日至31日属于基于周的2025年。
务必注意日期格式中 Y 和 y 的大小写区分,并严格遵循 ISO 8601 规则,以避免错误。











