Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中将时间戳转换为不同时区的值_Javascript_Datetime - Fatal编程技术网

在Javascript中将时间戳转换为不同时区的值

在Javascript中将时间戳转换为不同时区的值,javascript,datetime,Javascript,Datetime,我有不同的时间戳和来自API的时区作为对象。例如: {{'ts' : 1521311400000}, {'tz' : 'GMT+01:00'}} 如何使用toLocaleTimeString()将时间戳转换为该时区中的人类可读日期?我已尝试将选项对象中的时区作为所述的时区的值传递,但在DateTimeFormat()中出现无效时区的错误,无法确定正确的格式 要在设置日期格式时获得这种灵活性,您可能需要查看和。要在设置日期格式时获得这种灵活性,您可能需要查看和。如果您想要其他选项,您可以尝试以

我有不同的时间戳和来自API的时区作为对象。例如:

{{'ts' : 1521311400000},
 {'tz' : 'GMT+01:00'}}

如何使用
toLocaleTimeString()
将时间戳转换为该时区中的人类可读日期?我已尝试将
选项
对象中的时区作为所述的
时区
的值传递,但在DateTimeFormat()中出现
无效时区的错误,无法确定正确的格式

要在设置日期格式时获得这种灵活性,您可能需要查看和。

要在设置日期格式时获得这种灵活性,您可能需要查看和。

如果您想要其他选项,您可以尝试以下方法:

function init() {
  function formatFixedTimeZone(ts, tz) {
    let offsetStr = tz.replace(/:/g, '');
    let reverseOffset = offsetStr.replace(/[-+]/, sign => sign === '+' ? '-' : '+');
    let time = new Date(ts);
    let timeStr = time.toUTCString().replace('GMT', reverseOffset);

    time = new Date(Date.parse(timeStr));
    timeStr = time.toLocaleString('en-US', {
      timeZone: 'UTC', // Don't change this from UTC for other time zones.
      weekday: 'short',
      month: 'short',
      day: 'numeric',
      year: 'numeric',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit'
    }) + ' ' + tz;

    return timeStr;
  }

  let timeDisplay = document.getElementById('time');

  function tick() {
    let nowStr = formatFixedTimeZone(Date.now(), 'GMT+01:00');

    timeDisplay.textContent = nowStr;
  }

  setInterval(tick, 1000);
}
普朗克:


这将显示固定时区中当前时间的运行计数,但我尝试以这样一种方式编写它:如果您不使用当前时间,而是使用API中的ts和tz值,那么根据您的需要和不同的输出格式调整它应该不会太难。

如果您想要其他选项,可以尝试以下方法:

function init() {
  function formatFixedTimeZone(ts, tz) {
    let offsetStr = tz.replace(/:/g, '');
    let reverseOffset = offsetStr.replace(/[-+]/, sign => sign === '+' ? '-' : '+');
    let time = new Date(ts);
    let timeStr = time.toUTCString().replace('GMT', reverseOffset);

    time = new Date(Date.parse(timeStr));
    timeStr = time.toLocaleString('en-US', {
      timeZone: 'UTC', // Don't change this from UTC for other time zones.
      weekday: 'short',
      month: 'short',
      day: 'numeric',
      year: 'numeric',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit'
    }) + ' ' + tz;

    return timeStr;
  }

  let timeDisplay = document.getElementById('time');

  function tick() {
    let nowStr = formatFixedTimeZone(Date.now(), 'GMT+01:00');

    timeDisplay.textContent = nowStr;
  }

  setInterval(tick, 1000);
}
普朗克:


这将显示固定时区中当前时间的运行计数,但我尝试以这样的方式编写它:如果您不使用当前时间,而是使用API中的ts和tz值,适应您的需要和不同的输出格式应该不会太难。

我已经研究了moment.js,但仅为一种情况使用整个库是有点过分了我已经研究了moment.js,但仅为一种情况使用整个库是有点过分了