01三种看起来相似的数据
一次操作发生的时刻,是时间点;某人的出生日期,是日期;界面上“年、月、日”的排布,则是展示格式。它们不应因为都能放进日期组件,就被当作同一种数据。
记录操作时间时,可以使用带明确时区信息的格式。纯日期字段通常保留年月日即可,避免无意义的时区换算改变它的日历日期。
02在展示端明确指定时区
对于来自接口的时间点,可以用 Intl.DateTimeFormat 显式指定展示时区。这样,展示结果不会仅取决于访问设备的系统设置。
示例中的 Z 表示 UTC。实际接口也应约定清楚格式,不要让前端猜测一个没有时区说明的字符串属于哪个地区。
JAVASCRIPT
const formatter = new Intl.DateTimeFormat('zh-CN', {
timeZone: 'Asia/Shanghai',
dateStyle: 'medium',
timeStyle: 'short',
});
const instant = new Date('2026-11-03T02:30:00Z');
console.log(formatter.format(instant));03日期差和时长也要分开计算
“距离上次到访几天”可能按本地日历日期统计,“请求花了多少秒”则是在计算时长。两种规则在午夜附近会出现不同结果,需求中应把含义说清楚。
有效期按月或年设置时,也需要定义月底和闰日的处理方式。先约定规则,再用月底、跨年和午夜附近的数据验证,能减少后续解释成本。
进一步阅读
下列文档用于延伸阅读,文中示例是围绕具体问题编写的简化示例。