JavaScript 时间处理核心:UNIX 时间戳与 Date 对象详解

作者:木棉

时间:2026-10-22

浏览:176

本文详解 JavaScript 中的时间处理机制,涵盖 UNIX 时间戳、GMT 与 UTC 的区别及标准字符串格式。通过 Date 构造函数、Date.parse() 和 Date.now() 等核心方法,演示机器时间与人类可读时间的双向转换,帮助开发者在编程中统一时间表示标准。

文章目录

时间标准与 UNIX 时间戳基础

准备知识

GMT(格林尼治标准时间,Greenwich Mean Time)。UTC(国际协调时间,Universal Time Code)。PST(太平洋标准时间,Pacific Standard Time)。

UTC 的出现晚于 GMT,精度更高,两者差异仅在几秒之内。

UTC 的纪元起点设定为 1970-01-01T00:00:00.000Z,该格式支持毫秒级精度,其中字母 T 和 Z 仅为格式标识。

UNIX 时间戳定义为从 1970-01-01T00:00:00.000Z 至当前时刻的毫秒数(1 秒等于 1000 毫秒)。

本文涉及的时间类型定义如下:

机器时间:即 UNIX 时间戳,记为 mTime。

人类时间:指人类可读的各种时间格式,记为 hTime。

标准字符串时间:格式如 1970-01-01T00:00:00.000Z,记为 stdStrTime。

GMT 时间:格式如 Tue, 15 Aug 2017 13:58:23 GMT,记为 gmtTime。

需求描述

日常表达时间的方式多样,屏幕显示多为字符串形式,且需兼顾国际化差异。例如以下格式均可表示特定时间点:

2017年8月15日20:51:22

2017.08.15

2017-08-15 AM

6/13/2004

January 12, 2004

Tue May 25 2004 00:00:00 GMT-0700

1970-01-01T00:00:00.000Z

上述格式各异,若程序需在指定时间执行任务,需统一标准。计算机编程中通常采用 UNIX 时间戳,因其精确到毫秒且格式唯一,极利于程序处理。

JavaScript Date 核心函数与转换

核心函数


new Date()

参数可为机器时间,若省略参数则传入当前机器时间。返回值为标准字符串时间。


// 参数为空时
var stdStrTime = new Date();
console.log(stdStrTime);
// output: 2017-08-15T14:22:08.385Z
var gmtTime = stdStrTime.toUTCString();
console.log(gmtTime);
// output: Tue, 15 Aug 2017 14:22:08 GMT

// 参数不为空时
var stdStrTime = new Date(1502769188084);
console.log(stdStrTime);
// output: 2017-08-15T03:53:08.084Z
var gmtTime = stdStrTime.toUTCString();
console.log(gmtTime);
// output: Tue, 15 Aug 2017 03:53:08 GMT

也可使用 toGMTString() 方法转换为 GMT 时间,但该方法目前已不推荐使用。


Date.parse()

参数为标准字符串时间,返回值对应机器时间。


var stdStrTime = "2017-08-15T03:53:08.084Z";
var mTime = Date.parse(stdStrTime);
console.log(mTime);
// output: 1502769188084

时间处理核心问题与实现

2个问题

JavaScript 处理时间与其它语言原理相似,核心在于解决两个问题:

将机器时间转换为人类可读时间

将人类可读时间转换为机器时间

获取当前机器时间


console.log(Date.now());
// ouput: 1502802483928

获取当前人类可读时间


var stdStrTime = new Date();
console.log(now);

在 Chrome 环境中,上述代码输出示例为:Tue Aug 15 2017 21:09:46 GMT+0800 (China Standard Time)。在 Node.js 环境中,输出示例为:2017-08-15T13:06:34.806Z。

标准字符串时间转机器时间示例


var stdStrTime = "2004-05-25T00:00:00.000Z";
var mTime = Date.parse(humanTime);
console.log(machineTime);
// output: 1085443200000

机器时间转标准字符串时间示例


var mTime = 1085443200000;
var stdStrTime = new Date(mTime);
console.log(stdStrTime);
// output: 2004-05-25T00:00:00.000Z

参考书籍

《JavaScript 高级程序设计》第三版

以上关于 JS 操作时间与 UNIX 时间戳的介绍即为全部内容,希望能提供参考,欢迎支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章