别再用 moment.js 了:从 date-fns 重构 20 个日期处理场景的真实记录
项目里 moment.js 的包体积和可变性坑了很多次。打包分析里 moment + locales 占了 300KB 以上,Tree-shaking 几乎无效,因为 moment 是 CommonJS 且 API 设计上处处依赖原型方法。另一个被忽视的问题是它对原始 Date 对象的修改——moment().add(1, 'day') 虽然返回新对象,但 startOf('week') 之类的操作在某些链式调用后仍会悄悄改掉引用的日期。这篇文章不讲概念对比,只记录我如何把 20 多个实际业务中的日期逻辑迁移到 date-fns,包括时区处理、周起始日、区间边界、夏令时以及 SSR 里的序列化...