找回密码
 立即注册
搜索
查看: 831|回复: 11

[职场] 日期时间格式化的库有没有什么好的选择

[复制链接]
发表于 2025-1-3 17:14 | 显示全部楼层 |阅读模式
使用moment把日期格式化成“YYYY年第WW周”,但是最近用户报了个bug,2024-12-29和12-30 12-31都会被格式化成为2024年第01周。
思索半天大概是这玩意年份和月份是分开算了然后拼一块输出的(?) 有没有其他好用的库能正确格式化的

回复

使用道具 举报

     
发表于 2025-1-3 17:15 来自手机 | 显示全部楼层
dayjs




—— 来自 鹅球 v3.3.96-alpha
回复

使用道具 举报

 楼主| 发表于 2025-1-3 17:21 | 显示全部楼层

支持的格式化占位符似乎没有第几周
回复

使用道具 举报

     
发表于 2025-1-3 17:27 | 显示全部楼层
本帖最后由 lawsherman 于 2025-1-3 17:38 编辑

看了下文档


这是预期的行为。根据ISO 8601标准,2024年不是53周的一年。
有53个星期的长年度可以用下列任何一种同等的定义来描述:
  • 从星期四开始的任何一年(主字母D或DC)和从星期三开始的任何闰年(ED)
  • 周四结束的任何一年和周五结束的任何闰年
  • 1月1日和12月31日(通常年份)或(闰年)为星期四的年份


所以要使用 GGGG-WW,然后会显示为2025-01
使用YYYY-ww,会显示为2024-01
______
也就是说,按照ISO 8601标准,2024年应该就是没有第53周的
要生成2024年第53周,只能搞手动录入了

回复

使用道具 举报

     
发表于 2025-1-3 17:30 | 显示全部楼层
笑死
我们这系统才报了一个一样的bug
还被揪着复盘了
回复

使用道具 举报

     
发表于 2025-1-3 17:36 来自手机 | 显示全部楼层
我们集团也出这个bug了,连累我们子公司也出了问题,集团给出的解释是服务器时区不对,美国时区过了12月24号,算25年,我怎么想怎么不对,去年都没问题

—— 来自 鹅球 v3.3.96-alpha
回复

使用道具 举报

     
发表于 2025-1-3 17:47 | 显示全部楼层
https://momentjs.com/docs/#/-project-status/recommendations/

Here are the alternatives we recommend:

Luxon
Luxon can be thought of as the evolution of Moment. It is authored by Isaac Cambron, a long-time contributor to Moment. Please read Why does Luxon exist? and the For Moment users pages in the Luxon documentation.

Locales: Intl provided
Time Zones: Intl provided
Day.js
Day.js is designed to be a minimalist replacement for Moment.js, using a similar API. It is not a drop-in replacement, but if you are used to using Moment's API and want to get moving quickly, consider using Day.js.

Locales: Custom data files that can be individually imported
Time Zones: Intl provided, via a plugin
date-fns
Date-fns offers a series of functions for manipulating JavaScript Date objects. For more details, scroll to "Why date-fns?" on the date-fns home page.

Locales: Custom data files that can be individually imported
Time Zones: Intl provided, via a separate companion library
js-Joda
js-Joda is a JavaScript port of Java's Three-Ten Backport, which is the base for JSR-310 implementation of the Java SE 8 java.time package. If you are familiar with java.time, Joda-Time, or Noda Time, you will find js-Joda comparable.

Locales: Custom data files via add-on module
Time Zones: Custom data files via add-on module
回复

使用道具 举报

     
发表于 2025-1-3 17:49 | 显示全部楼层
看了下ISO 8601的定义,2024-12-30和2024-12-31是算在25年的第一周
回复

使用道具 举报

     
发表于 2025-1-3 17:53 | 显示全部楼层
笑死
不是bug 是feature
回复

使用道具 举报

     
发表于 2025-1-3 17:57 | 显示全部楼层
zerocount 发表于 2025-1-3 17:53
笑死
不是bug 是feature

也不是,显示为2025年第01周可能是feature,但是显示为2024年第01周一定是bug
回复

使用道具 举报

     
发表于 2025-1-3 17:59 | 显示全部楼层
本帖最后由 strayark 于 2025-1-3 18:00 编辑

根据ISO 8601,一年的第一周是包含该年的第一个周四的周次。这意味着,一年中不完整的第一个周会被放入前一年的最后一周

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2025-1-3 18:04 | 显示全部楼层
Joshua64 发表于 2025-1-3 17:57
也不是,显示为2025年第01周可能是feature,但是显示为2024年第01周一定是bug

实际也是feature,moment.js有以ISO标准输出的参数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-1-31 15:46 , Processed in 0.024811 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表