You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅通过CDN引入实现时间字符串转指定时区的Date对象

实现方案

方案1:使用Luxon实现

引入方式

在HTML中直接插入CDN引入标签:

<script src="https://cdn.jsdelivr.net/npm/luxon@3.4.4/build/global/luxon.min.js"></script>

功能实现代码

const { DateTime } = luxon;

// 可变输入时间字符串
const inputTimeStr = '2021-11-26 21:47';
const targetTimezone = 'Europe/Moscow';

// 解析为莫斯科时区对应时间
const moscowTime = DateTime.fromFormat(inputTimeStr, 'yyyy-MM-dd HH:mm', {
  zone: targetTimezone
});

// 获取原生Date对象
const nativeDate = moscowTime.toJSDate();
// 获取对应UTC格式化字符串
const utcTimeStr = moscowTime.toUTC().toFormat('yyyy-MM-dd HH:mm:ss');

console.log('莫斯科时间对应原生Date:', nativeDate);
console.log('对应UTC时间:', utcTimeStr);

方案2:使用date-fns + date-fns-tz实现

引入方式

在HTML中直接插入CDN引入标签:

<script src="https://cdn.jsdelivr.net/npm/date-fns@2.30.0/dist/date-fns.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@date-fns/tz@1.0.1/dist/date-fns-tz.umd.min.js"></script>

功能实现代码

const { zonedTimeToUtc, format } = dateFnsTz;

const inputTimeStr = '2021-11-26 21:47';
const targetTimezone = 'Europe/Moscow';

// 直接得到对应UTC时间的Date对象
const utcDate = zonedTimeToUtc(inputTimeStr, targetTimezone);

// 校验时间正确性
console.log('UTC Date对象:', utcDate);
console.log('格式化校验莫斯科时间:', format(utcDate, 'yyyy-MM-dd HH:mm', { timeZone: targetTimezone }));

注意事项

  • 原生Date对象本身不携带时区属性,直接打印会按运行环境的本地时区显示,属于正常现象,其内部存储的时间戳是对应莫斯科时区指定时间的正确值
  • 两种方案返回的时间戳完全一致,可根据个人使用习惯选择

内容的提问来源于stack exchange,提问作者Philipp Chapkovski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:06:03