结论先行
- 现代,各国都是一周七天。
- 在国际标准与中国标准里,为包含1月4日的周为第一周,所以有跨年的周。
- 在国际标准与中国标准里,周一为周的第一天。
- 其他地区不一定,比如北美是周日为第一天,也有周六为第一天,而欧洲与中国一样为周一。
- 周 – 维基百科,自由的百科全书 — Week – Wikipedia
相关标准
ISO 8601:数据存储和交换形式 信息交换 日期和时间的表示方法
- 每个日历星期从星期一开始,星期日为第7天。
- 第一个日历星期有以下四种等效说法:
- 本年度第一个星期四所在的星期;
- 1月4日所在的星期;
- 本年度第一个至少有4天在同一星期内的星期;
- 星期一在去年12月29日至今年1月4日以内的星期;
GB/T 7408:数据元和交换格式 信息交换 日期和时间表示法
可以在 全国标准信息公共服务平台 里搜索 GB/T 7408,看目前现行标准版本。但基本采标关系为等同 ISO 8601。
现像与问题
- 在系统里的计算周数函数中,第几周,周第几天的值,结果会不一样。比如Oracle 数据库,见下面示例。
- 纸质台历/手机日历的显示效果,也有差异。比如有周日在前,也有周一在前的。
SQL> select substr(to_char(to_date(20210103,'yyyymmdd'),'YYYYIW'),-4) as YYIW from dual;
YYIW
----
2153
SQL> select substr(to_char(to_date(20210103,'yyyymmdd'),'IYYYIW'),-4) as YYIW from dual;
YYIW
----
2053
2021年1月3日应该是2020年第53周,所以要使用IYYYIW才正确。
select to_char(SYSDATE,'IYYYIW') as IW from dual;
发表回复