【问题标题】:mismatch in local date conversion to utc epoch time and back to date in javascript本地日期转换为 utc 纪元时间和在 javascript 中返回日期不匹配
【发布时间】:2015-03-02 17:42:17
【问题描述】:

设本地日期时间为local : Mar 10 2014 11:52:50 GMT+0530
在 javascript 中将其转换为 UTC 纪元时间:

var epochtime=Date.UTC(2014,2,10,11,52,50);


output : 1394452370000

现在将其转换回本地日期:

var utcSeconds =1394452370000;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCSeconds(utcSeconds);
alert(d);

output : Fri Jun 09 46158 06:03:20 GMT+0530

但需要的输出是: Mar 10 2014 11:52:50 GMT+0530

请有人找出问题所在..?

【问题讨论】:

    标签: javascript date utc epoch date-conversion


    【解决方案1】:

    毫秒!= 秒。您以毫秒为单位获得一个值,但随后将其用作秒。

    要将您的价值转化为日期,只需:

    var d = new Date(1394452370000);
    

    例子:

    var epochtime=Date.UTC(2014,2,10,11,52,50);
    var d = new Date(epochtime);
    snippet.log(d.toISOString());
    <!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
    <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

    【讨论】:

    • 我试过了,日期没问题,但时间仍然不匹配.. Mar 10 2014 17:22:50
    • 所以我们不能使用 setUTCSeconds 来达到这个目的吗?如果可以,为什么有什么区别
    • @jacquel:见上文。生成的 Date 对象恰好具有您指定的时间。请注意,Date 实例中的 toString 始终为您提供本地时间,因此如果您想查看 UTC 时间,则必须使用 UTC 或 ISO 方法。
    • @jacquel:再次: 毫秒!= 秒。如果你真的想使用setUTCSeconds,你需要除以1000才能将毫秒转换为秒。
    • 非常感谢您的澄清,.,., 我不知道输入的单位是毫,.,.,
    【解决方案2】:

    您可以尝试直接将UTC转换为日期吗,

    var d = new Date(utcSeconds); 警报(d);

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 2021-12-31
      • 2012-10-07
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 2020-09-14
      • 2019-06-21
      • 2012-02-18
      相关资源
      最近更新 更多