为什么我在Javascript中的日期中得到了错误的小时数?[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我在Javascript中的日期中得到了错误的小时数?[重复]相关的知识,希望对你有一定的参考价值。

我想从一个日期字符串中获取小时和分钟,所以我把它转换为一个日期,然后使用getHours()和getMinutes()方法。问题是,结果是12:20而不是10:20。为什么会发生这种情况,我怎样才能得到正确的小时?

function myFunction() 
  var d = new Date("2020-05-28T10:20:00.000Z");
  hours = d.getHours();
  minutes = d.getMinutes();
  document.getElementById("demo").innerhtml = hours + ":" + minutes;


myFunction();
<div id="demo"></div>

这里你有一个JSFiddle来试试。

https:/jsfiddle.netoqLsna0e1。

谢谢你!我想从一个日期字符串中获取小时和分钟,以便将其转换为日期,然后使用getHours(和getMinutes()方法。

答案

getHours 方法是根据应用程序的托管地来检索小时数。在您的情况下,应用程序必须托管在CEST时区(GMT+2)。

您需要使用 getUTCHours 方法来获取UTC的小时数,因为你是用ZULU来指定日期的。

另一答案

z 字符串的末尾表示零时差,即 UTC. Date.getHours 根据您的要求返回时间。local 时间,所以不会出错。Date.getUTCHours 返回UTC+-0小时。

如果你需要使用时区,有很多库,如 日子.js日期-fns.

以上是关于为什么我在Javascript中的日期中得到了错误的小时数?[重复]的主要内容,如果未能解决你的问题,请参考以下文章

与 javascript 日期相比,Json Stringify 日期产生错误的日​​期

Javascript Date() 将错误的日期推迟一小时

Javascript Date() 将错误的日期推迟一小时

为啥我在 python plotly.figure_factory 中的 annotation_text 在某些单元格中得到了错误的坐标?

剑道网格中的 JavaScript 日期

仅比较日期部分而不比较 JavaScript 中的时间