js实现unix
Unix 时间戳简介
Unix 时间戳是指从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的总秒数(或毫秒数),广泛用于记录和计算时间。
获取当前 Unix 时间戳
JavaScript 中可以通过 Date 对象获取当前时间的 Unix 时间戳(秒级或毫秒级):
// 毫秒级 Unix 时间戳
const timestampMs = Date.now();
// 秒级 Unix 时间戳
const timestampSec = Math.floor(Date.now() / 1000);
将日期转换为 Unix 时间戳
若需将特定日期转换为 Unix 时间戳,可通过 Date.parse() 或 new Date() 实现:
// 方法1:使用 Date.parse()
const dateString = "2023-10-01T12:00:00Z";
const timestampFromString = Date.parse(dateString) / 1000;
// 方法2:使用 new Date()
const date = new Date(2023, 9, 1, 12, 0, 0); // 月份从 0 开始(9 表示 10 月)
const timestampFromDate = Math.floor(date.getTime() / 1000);
将 Unix 时间戳转换为日期
将 Unix 时间戳(秒级或毫秒级)转换为可读日期:
// 秒级时间戳转日期
const timestampSec = 1664611200;
const dateFromSec = new Date(timestampSec * 1000);
// 毫秒级时间戳转日期
const timestampMs = 1664611200000;
const dateFromMs = new Date(timestampMs);
// 输出格式化日期
console.log(dateFromSec.toISOString()); // "2022-10-01T00:00:00.000Z"
处理时区问题
Unix 时间戳基于 UTC,转换为本地时间时需注意时区差异:
const timestamp = 1664611200;
const date = new Date(timestamp * 1000);
// 获取本地时间字符串
console.log(date.toString()); // 显示本地时区时间
// 手动调整时区(示例:转换为 UTC+8)
const utc8Offset = 8 * 60 * 60 * 1000;
const dateUTC8 = new Date(date.getTime() + utc8Offset);
console.log(dateUTC8.toISOString());
实用工具函数
封装常用操作的函数:

// 获取当前秒级时间戳
function getCurrentTimestampSec() {
return Math.floor(Date.now() / 1000);
}
// 格式化 Unix 时间戳为本地字符串
function formatTimestamp(timestampSec, timezoneOffset = 0) {
const date = new Date((timestampSec + timezoneOffset * 3600) * 1000);
return date.toLocaleString();
}
注意事项
- JavaScript 的
Date对象处理毫秒级时间戳,Unix 时间戳通常为秒级,需注意单位转换。 - 日期字符串的解析可能因浏览器而异,建议使用
YYYY-MM-DDTHH:mm:ssZ格式。






