element-plus
element-plus copied to clipboard
[Component] [date-picker] date-picker周选择模式下年展示问题
Bug Type: Component
Environment
- Vue Version:
3.3.13
- Element Plus Version:
2.4.4
- Browser / OS:
Chrome 120.0.6099.110
- Build Tool:
Vite
Reproduction
Related Component
-
el-date-picker
Reproduction Link
Steps to reproduce
选择2024年最后一周或者2025年第一周
What is Expected?
应展示为“2024 53”或着“2025 01”
What is actually happening?
实际展示为“2024 01”
Additional comments
关于周的计算 希望能有个参数可以决定当年最后一周天数不为7天时 周归属于当年还是下一年
[Ant Design](https://ant.design/components/date-picker)
参考ant design 的 week,我觉得自动判定为下一年的第一周即可,加参数我感觉不太合适
![]()
[Ant Design](https://ant.design/components/date-picker) 参考ant design 的 week,我觉得自动判定为下一年的第一周即可,加参数我感觉不太合适
按照ISO 8601标准,每年的1月1日不是周一的话,算作上一年的第53周,每年第一周是从1月1日开始的第一个周一算起的。
这是目前在知乎和GPT中得的回答
![]()
[Ant Design](https://ant.design/components/date-picker) 参考ant design 的 week,我觉得自动判定为下一年的第一周即可,加参数我感觉不太合适
按照ISO 8601标准,每年的1月1日不是周一的话,算作上一年的第53周,每年第一周是从1月1日开始的第一个周一算起的。
这是目前在知乎和GPT中得的回答
sorry, 我刚看到,那我这个pr错了
有标准可依的话,确实会更有说服力,受教了,顺便后端有疑问的时候也可以按标准告知
我简单查了下标准,它里面有释义:“推理可得,如果1月1日是星期一、星期二、星期三或者星期四,它所在的星期就是第一个日历星期;如果1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53个日历星期;12月28日总是在一年最后一个日历星期。”
我用dayjs库的isoWeek试了下,确实是这么计算的,再回来看element的实现应该没有按照这个标准来。
我简单查了下标准,它里面有释义:“推理可得,如果1月1日是星期一、星期二、星期三或者星期四,它所在的星期就是第一个日历星期;如果1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53个日历星期;12月28日总是在一年最后一个日历星期。” 我用dayjs库的isoWeek试了下,确实是这么计算的,再回来看element的实现应该没有按照这个标准来。
同意,wiki上的答案。 可能还要看下国际化对于week的规范,因为国外每周的第一天是星期日,如果没问题就按照这样的规范去修复,保证符合规范。
ISO 8601 is not the only week numbering system in the world, other systems use weeks starting on Sunday (US) or Saturday (Islamic). https://www.epochconverter.com/weeknumbers
能把format参数类型改为string或者(current: Date)=>string吗 这样可以让开发自己去解决转换的问题