-
Notifications
You must be signed in to change notification settings - Fork 310
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(date-picker): add dayjs updateLocale plugin to support correct week numbers #1706
base: develop
Are you sure you want to change the base?
fix(date-picker): add dayjs updateLocale plugin to support correct week numbers #1706
Conversation
非常感谢 PR 🌹 稍后会有同事帮忙验证 |
非常感谢你的pr 🌹 |
@azx1573 感谢!想问下从选择周的角度来说,是否点在 2023-12-31 和 2024-01-01 应该显示两种不同的结果,还是统一为 2024 年第 1 周? |
|
@azx1573 感谢,那面板上周数如何标识?比如说当前面板上是 2023 年 12 月,那最后一周左侧应该是 52 周还是 1 周?
我测试了一下 tdesign-vue-next 好像没有上述这个问题。 |
这是我刚想要说的一点, 之前存在高亮这个问题的你可以试试,但是你将这个数组顺序改了后就不存在了,因为23年31号被认为是23年第一周😂,等号前面值为1,1-5号是24年第一周,值也为1,选这周的任何一个值value都为1,后面是数组第一列表示周的值,之前52现在变成1,两个值相等所以高亮的问题不存在了😂 |
@azx1573 只针对这一点来说,请问如果抽出一个函数计算周的序号可以么?还是从其他地方(比如各个技术栈的展示)入手比较合适? |
我理解是只要我们不对已有功能造成影响或可能造成影响,你可以根据你的思路信马由缰去发挥,千万别被别人的思路桎梏😄,期待你的更优解👏 @Summer-Shen
|
简单测试了一下,dayjs 的 const dayjs = require("dayjs");
const weekOfYear = require("dayjs/plugin/weekOfYear");
const updateLocale = require("dayjs/plugin/updateLocale");
const advancedFormat = require("dayjs/plugin/advancedFormat");
dayjs.extend(weekOfYear);
dayjs.extend(updateLocale);
dayjs.extend(advancedFormat);
dayjs.updateLocale("zh-cn", {
weekStart: 7, // week starts at Sunday
});
function parseDateToWeekNumber(date) {
return dayjs(date).locale("zh-cn").format("YYYY-wo");
}
console.log(parseDateToWeekNumber("2025-12-31")); // 2025-1st
console.log(parseDateToWeekNumber("2026-01-01")); // 2026-1st 可能打算去给 dayjs 提 issue;and/or 我们要自己实现 另一方面来说,ISO 8601 的定义是基于一周的第一天是周一,我们可能需要讨论一下这个定义、我再考虑一下。 |
ISO 8601 的标准我们也没法改变,antd我大概看了下印象中好像都不支持自定义周起始日,tdesigin已经支持了并且内外部已经有不少项目使用了这个事实也是没法改变的😂。你下午提了后,我也用了两个demo,一个是你这边的代码,另一个是独立使用dayjs的,粗略验证了下dayjs里部分特殊日期的值确是有问题的,所以想着看看你这边能不能有更独特,更优更新颖的解法。 |
最近做了一些测试和思考,考虑到既有的值格式为
不过这也仍然是 breaking change:当 另一方面而言,我注意到 dayjs 其实提供了另一种 format 从这两点来说,更好的方案可能是:
不知道您怎么看?感谢! 另外之后可能会重开一个 PR,之前的 solution 爆炸半径大了些。 |
非常感谢,年后一起看看❤️🌹 @Summer-Shen |
🤔 这个 PR 的性质是?
🔗 相关 Issue
Tencent/tdesign-vue-next#3785
💡 需求背景和解决方案
更新 dayjs 已有的语言配置 以获取正确的周数。
firstDayOfWeek
为一周第 1 天,则这周的第 4 天我们记为星期x
;x
所在的星期是本年度的第一周。参考:iamkun/dayjs#2237
📝 更新日志
fix(date-picker): 添加 dayjs updateLocale 插件,以支持正确的周数
本条 PR 不需要纳入 Changelog
☑️ 请求合并前的自查清单