纪元日期转换在不同计算机上的不同结果

问题描述

我在Epoch Date转换方面遇到问题。我为此使用了moment.js JavaScript库。我有Epoch格式的UTC DateTime值。当我在两台不同的计算机(使用不同的时区)上运行相同的纪元转换代码时,我将获得不同的日期转换结果。

我正在使用以下JavaScript代码

 var epochTime = 1603825239000;

 var result = moment(epochTime).format('lll'); 

 document.write(result); // the result I get is: Oct 28,2020 6:00 AM

现在,当在具有太平洋时区的另一台计算机上运行完全相同的代码时,它返回的结果为:

  var epochTime = 1603825239000;

  var result = moment(epochTime).format('lll'); 
 
  document.write(result); // Now the result is different: Oct 27,2020 12:00 PM

是否可以做一些事情来确保纪元日期转换结果无论计算机时区如何都不会改变?而且我总是会得到第一个转化值,即 2020年10月28日6:00

解决方法

您可以使用moment timezone指定希望显示时间的时区。

或者,我们可以执行moment.utc()创建一个设置为UTC时区的日期。

const epochTime = 1603825239000;
const timeZone = "America/Los_Angeles";

const date = moment.tz(epochTime,timeZone);
console.log("Time in timezone:",date.format('lll'))

// Or just write UTC time
console.log("UTC time:",moment.utc(epochTime).format('lll'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.25/moment-timezone-with-data-10-year-range.js"></script>