element-plus icon indicating copy to clipboard operation
element-plus copied to clipboard

[Component] [date-picker] date-picker周选择模式下年展示问题

Open chaosZsc opened this issue 1 year ago • 8 comments

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

Element Plus Playground

Steps to reproduce

选择2024年最后一周或者2025年第一周

What is Expected?

应展示为“2024 53”或着“2025 01”

What is actually happening?

实际展示为“2024 01”

Additional comments

关于周的计算 希望能有个参数可以决定当年最后一周天数不为7天时 周归属于当年还是下一年

chaosZsc avatar Dec 21 '23 03:12 chaosZsc

Snipaste_2023-12-21_12-05-04 Snipaste_2023-12-21_12-05-36 [Ant Design](https://ant.design/components/date-picker) 参考ant design 的 week,我觉得自动判定为下一年的第一周即可,加参数我感觉不太合适

Bbbtt04 avatar Dec 21 '23 04:12 Bbbtt04

Snipaste_2023-12-21_12-05-04 Snipaste_2023-12-21_12-05-36 [Ant Design](https://ant.design/components/date-picker) 参考ant design 的 week,我觉得自动判定为下一年的第一周即可,加参数我感觉不太合适

按照ISO 8601标准,每年的1月1日不是周一的话,算作上一年的第53周,每年第一周是从1月1日开始的第一个周一算起的。 这是目前在知乎和GPT中得的回答

chenxch avatar Dec 21 '23 05:12 chenxch

Snipaste_2023-12-21_12-05-04 Snipaste_2023-12-21_12-05-36 [Ant Design](https://ant.design/components/date-picker) 参考ant design 的 week,我觉得自动判定为下一年的第一周即可,加参数我感觉不太合适

按照ISO 8601标准,每年的1月1日不是周一的话,算作上一年的第53周,每年第一周是从1月1日开始的第一个周一算起的。 这是目前在知乎和GPT中得的回答

sorry, 我刚看到,那我这个pr错了

Bbbtt04 avatar Dec 21 '23 05:12 Bbbtt04

有标准可依的话,确实会更有说服力,受教了,顺便后端有疑问的时候也可以按标准告知

chaosZsc avatar Dec 21 '23 09:12 chaosZsc

我简单查了下标准,它里面有释义:“推理可得,如果1月1日是星期一、星期二、星期三或者星期四,它所在的星期就是第一个日历星期;如果1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53个日历星期;12月28日总是在一年最后一个日历星期。” 我用dayjs库的isoWeek试了下,确实是这么计算的,再回来看element的实现应该没有按照这个标准来。 image

chaosZsc avatar Dec 22 '23 01:12 chaosZsc

我简单查了下标准,它里面有释义:“推理可得,如果1月1日是星期一、星期二、星期三或者星期四,它所在的星期就是第一个日历星期;如果1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53个日历星期;12月28日总是在一年最后一个日历星期。” 我用dayjs库的isoWeek试了下,确实是这么计算的,再回来看element的实现应该没有按照这个标准来。 image

image 同意,wiki上的答案。 可能还要看下国际化对于week的规范,因为国外每周的第一天是星期日,如果没问题就按照这样的规范去修复,保证符合规范。

chenxch avatar Dec 22 '23 01:12 chenxch

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

chenxch avatar Dec 22 '23 01:12 chenxch

能把format参数类型改为string或者(current: Date)=>string吗 这样可以让开发自己去解决转换的问题

chaosZsc avatar Jan 08 '24 08:01 chaosZsc