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

如何将秒级时间戳转换为指定时区(东京)时间?

解决方案:将时间戳转换为东京时区时间

你的代码问题在于:getHours()、getMinutes()、getSeconds()这些方法获取的是**运行环境本地时区(欧洲)**的时间值,和你尝试的toLocaleString()没有关联,所以即使设置了时区参数,最终返回的还是欧洲时区的时间结果。

下面提供两种可行的解决方式:

方式一:直接用toLocaleString完成格式化(推荐)

这是最简洁可靠的方法,直接通过配置时区参数让方法帮你完成所有格式化:

function getTimeSwitchTokyoTime(secOfCookie) {
  const date = new Date(secOfCookie * 1000);
  return date.toLocaleString("en-US", {
    timeZone: "Asia/Tokyo",
    timeZoneName: "long",
    year: 'numeric',
    month: 'short',
    day: 'numeric',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
  });
}

// 调用示例
console.log(getTimeSwitchTokyoTime(1665224574));
// 输出: "Oct 08, 2022, 19:22:54 Japan Standard Time"

方式二:手动拆分东京时区的时间部分(自定义格式用)

如果需要更灵活的格式拼接,可以用Intl.DateTimeFormat提取东京时区的各个时间组件:

function getTimeSwitchTokyoTime(secOfCookie) {
  const date = new Date(secOfCookie * 1000);
  const formatter = new Intl.DateTimeFormat("en-US", {
    timeZone: "Asia/Tokyo",
    weekday: 'short',
    month: 'short',
    day: 'numeric',
    year: 'numeric',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    timeZoneName: 'long'
  });
  
  // 拆分格式化后的各个部分
  const parts = formatter.formatToParts(date);
  const dateStr = parts.filter(p => ['weekday', 'month', 'day', 'year'].includes(p.type)).map(p => p.value).join(' ');
  const timeStr = parts.filter(p => ['hour', 'minute', 'second'].includes(p.type)).map(p => p.value).join(':');
  const tzName = parts.find(p => p.type === 'timeZoneName').value;
  
  return `${dateStr} ${tzName} ${timeStr}`;
}

// 调用示例
console.log(getTimeSwitchTokyoTime(1665224574));
// 输出: "Sat Oct 08 2022 Japan Standard Time 19:22:54"

补充说明

你之前尝试的toLocaleString()代码本身是正确的,但没有将其结果整合到最终返回的字符串中,原代码依然在使用本地时区的时间组件,所以没有生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:31:38