大前提
只有一种时间,只有一种时间,只有一种时间。请认清这个大前提!
时间的表现形式
UTC
UTC时间是目前全球最主要的时间标准,用于规范世界各地的时间。你可以把它理解为一个全球通用的标准时间,所有时区都以此为基准进行调整。用大白话讲是不带时区、全世界统一的标准时间
GMT
GMT是格林尼治标准时间,曾是世界时间标准的代名词,其基准点是位于英国伦敦郊区格林尼治的皇家天文台 。在日常生活中,人们经常将 GMT 和 UTC (Coordinated Universal Time,协调世界时) 互换使用,因为它们的时间值是相同的
特别注意
new Date()
返回的不是严格意义上的 GMT 时间,它返回的是一个基于 UTC(世界协调时间)的"时间戳",但用你本地的时区来显示这个时间戳。
时间戳(毫秒数)
从1970 年 1 月 1 日 00:00:00 UTC(世界协调时间)距离现在的一个数字。
- 如果一个时间戳是 10 位数 (例如:
1759363200
),它通常表示秒数(Seconds)。 - 如果一个时间戳是 13 位数 (例如:
1759363200000
),它通常表示毫秒数(Milliseconds),这是目前更常用的高精度标准。
ISO 8601 格式
形如 YYYY-MM-DD THH:MM:SSZ 的时间格式,广泛应用于数据库、编程语言、网络协议(如 JSON)和金融交易,是专业数据交换的标准。
如何准确使用时间
笔者在这里推荐直接使用dayjs工具库处理时间,因为dayjs只有2kb大小,但是内置的方法非常多,适用很多业务场景
dayjs 默认返回带时区的时间(本机时间)
ISO 8601 格式的时间字符串
js
dayjs()?.toISOString()
// 2025-09-30T01:57:49.075Z ISO 8601 格式的时间字符串
毫秒数
js
dayjs()?.valueOf()
// 1759197673790 返回毫秒数
format
在项目中经常用到
js
// 假设当前时间是:2025年09月29日 19:02:28
const date = dayjs();
// 常用格式
date.format('YYYY-MM-DD HH:mm:ss');
// 输出: "2025-09-29 19:02:28"
date.format('MM/DD/YYYY');
// 输出: "09/29/2025"
时区转换
时区转换需要安装dayjs插件。需要在代码中按照如下方式使用
js
import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";
import timezone from "dayjs/plugin/timezone";
dayjs.extend(utc);
默认UTC时间
js
dayjs.utc()
// 返回一个UTC的时间