JavaScript时间戳与时间相互转换的常用方法
作者:风格654
这篇文章主要介绍了JavaScript时间戳与时间相互转换的常用方法,包括获取当前时间戳、时间戳转时间对象、时间戳转格式化字符串、时间字符串转时间戳等,还讨论了常见应用场景如计算时间差、倒计时和UTC与本地时间互转,需要的朋友可以参考下
前言
在 JavaScript 中,时间戳(Timestamp)通常指 Unix 时间戳,即从 1970年1月1日 00:00:00 UTC 到某个时间点经过的 毫秒数(注意:其他语言如 Python 可能使用秒,但 JavaScript 默认用毫秒)。以下是时间戳与时间格式相互转换的常用方法:
1. 获取当前时间戳
// 方法1:Date.now() const timestamp1 = Date.now(); // 方法2:new Date().getTime() const timestamp2 = new Date().getTime(); // 方法3:+new Date() const timestamp3 = +new Date();
2. 时间戳 → 时间对象
用时间戳生成 Date 对象后,可提取具体时间信息:
const timestamp = 1696147200000; // 示例时间戳(2023-10-01 00:00:00 UTC) const date = new Date(timestamp); // 提取时间信息(本地时区) const year = date.getFullYear(); // 2023 const month = date.getMonth() + 1; // 10(注意月份从0开始,需+1) const day = date.getDate(); // 1 const hours = date.getHours(); // 8(假设时区为UTC+8) const minutes = date.getMinutes(); // 0 const seconds = date.getSeconds(); // 0 // 提取UTC时间信息 const utcHours = date.getUTCHours(); // 0(UTC时间)
3. 时间戳 → 格式化字符串
将 Date 对象格式化为易读的字符串:
// 方法1:使用内置方法(本地时区)
const localDateStr = date.toLocaleDateString(); // "2023/10/1"
const localTimeStr = date.toLocaleTimeString(); // "08:00:00"
const localStr = date.toLocaleString();        // "2023/10/1 08:00:00"
// 方法2:手动拼接(灵活定制)
const formattedTime = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours}:${minutes}:${seconds}`;
// "2023-10-01 08:00:00"
// 方法3:转成ISO标准格式(UTC时间)
const isoString = date.toISOString(); // "2023-10-01T00:00:00.000Z"4. 时间字符串 → 时间戳
将日期字符串解析为时间戳:
// 方法1:Date.parse()(需符合标准格式)
const timestamp4 = Date.parse('2023-10-01T00:00:00Z'); // 1696147200000(UTC时间)
// 方法2:new Date().getTime()
const dateStr = '2023-10-01 08:00:00'; // 假设本地时区为UTC+8
const timestamp5 = new Date(dateStr).getTime(); // 1696147200000(需注意时区问题)
// 注意:非标准格式可能导致解析失败,建议使用ISO格式(YYYY-MM-DDTHH:mm:ssZ)5. 常见场景示例
场景1:计算时间差
const start = Date.now(); // ...执行某些操作 const end = Date.now(); const duration = end - start; // 毫秒数
场景2:倒计时功能
function formatCountdown(timestamp) {
  const now = Date.now();
  const diff = timestamp - now;
  const days = Math.floor(diff / (1000 * 60 * 60 * 24));
  const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  return `${days}天 ${hours}小时`;
}场景3:UTC与本地时间互转
// UTC时间 → 本地时间
const utcDate = new Date('2023-10-01T00:00:00Z');
const localHours = utcDate.getHours(); // 本地时区的小时数(如UTC+8得到8)
// 本地时间 → UTC时间戳
const localDate = new Date(2023, 9, 1, 8, 0, 0); // 2023-10-01 08:00:00(本地时间)
const utcTimestamp = Date.UTC(2023, 9, 1, 0, 0, 0); // 1696147200000注意事项
时区问题
new Date()和Date.parse()默认使用本地时区,而toISOString()和Date.UTC()使用 UTC 时区。跨时区应用建议统一使用 UTC 时间。
时间戳单位
JavaScript 使用 毫秒,与其他语言(如 Python 的秒)转换时需注意单位换算:
const seconds = Math.floor(timestamp / 1000); // 毫秒转秒 const milliseconds = seconds * 1000; // 秒转毫秒
浏览器兼容性
避免使用非标准日期格式(如
'2023-10-01'不带时间部分),不同浏览器解析结果可能不一致。
总结
到此这篇关于JavaScript时间戳与时间相互转换常用方法的文章就介绍到这了,更多相关JS时间戳与时间相互转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
