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

如何用JavaScript或NPM包将MSK时间转换为SST时间

将莫斯科标准时间(MSK)转换为新加坡标准时间(SST)

下面提供两种无需额外依赖的原生JavaScript方案,以及两款常用NPM包的实现方式,按需选择即可:

方案一:原生JavaScript(无额外依赖)

由于API仅返回时间部分,需先补充基准日期(示例用当前日期,也可指定固定日期),再通过时区偏移或Intl API完成转换:

// 输入的MSK时间字符串
const mskTimeStr = "07:00 PM";
// 拼接基准日期(这里取当前日期,可替换为目标日期)
const baseDate = new Date().toISOString().split('T')[0];
// 构建带MSK时区偏移的完整日期时间字符串(MSK为UTC+3,当前无夏令时)
const mskFullStr = `${baseDate}T${mskTimeStr.replace(' ', '')}+03:00`;
// 转换为新加坡时区并格式化输出
const sstTime = new Date(mskFullStr).toLocaleTimeString('en-US', {
  timeZone: 'Asia/Singapore',
  hour12: true,
  hour: '2-digit',
  minute: '2-digit'
});

console.log(sstTime); // 输出示例:"12:00 AM"(MSK 19:00 +5小时=次日SST 00:00)

方案二:使用moment-timezone(直观的时区处理)

先安装依赖:

npm install moment moment-timezone

转换代码:

const moment = require('moment-timezone');

const mskTimeStr = "07:00 PM";
// 解析为MSK时区时间,自动补充当前日期
const mskMoment = moment.tz(mskTimeStr, 'hh:mm A', 'Europe/Moscow');
// 转换为新加坡时区并格式化
const sstTime = mskMoment.tz('Asia/Singapore').format('hh:mm A');

console.log(sstTime); // 输出示例:"12:00 AM"

方案三:使用date-fns-tz(轻量替代方案)

先安装依赖:

npm install date-fns date-fns-tz

转换代码:

const { format, parse, zonedTimeToUtc, utcToZonedTime } = require('date-fns-tz');

const mskTimeStr = "07:00 PM";
const mskZone = 'Europe/Moscow';
const sstZone = 'Asia/Singapore';

// 解析MSK时区的时间(补充当前日期)
const mskDate = parse(mskTimeStr, 'hh:mm a', new Date(), { timeZone: mskZone });
// 转换为新加坡时区
const sstDate = utcToZonedTime(zonedTimeToUtc(mskDate, mskZone), sstZone);
// 格式化输出
const sstTime = format(sstDate, 'hh:mm a', { timeZone: sstZone });

console.log(sstTime); // 输出示例:"12:00 AM"

注意:若API返回的时间对应特定日期,只需将代码中的基准日期替换为目标日期即可。

内容的提问来源于stack exchange,提问作者Nasyx Nadeem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:50:26