Javascript中的getHours - 意外结果

时间:2015-06-08 14:01:35

标签: javascript angularjs

this.D = new Date(1433760825 * 1000);   
this.NewD = this.D.getHours();

D =“2015-06-08T10:53:45.000Z” - 这很好,这是我期待得到的。 但是......但......新的结果是11而不是10.为什么???

谢谢!

3 个答案:

答案 0 :(得分:0)

使用这样的值实例化Date对象时,您将获得基于UTC的日期。来自MDN:

  

整数值,表示自1以来的毫秒数   1970年1月00:00:00 UTC(Unix Epoch)。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

当您随后调用getHours()方法时,您将获得当地时区的小时数。

所以对你的例子来说:



var sampleDate = new Date(1433760825 * 1000);   
var hours = sampleDate.getUTCHours();
alert(sampleDate);
alert(this.hours);




应该得到你想要的结果。

答案 1 :(得分:0)

创建DateObject时,如果尝试打印它,它将根据UTC打印日期时间。但是当你执行getHours()属性时,它会告诉你根据你自己的当地时区传递的小时数。

(new DateTime()).getHours()

这将根据您的时区返回(UTC +偏移)小时数。

答案 2 :(得分:-1)

快速点几点:

  1. 不要使用单个字符变量名,也不要大写 如果你这样做

  2. D不等于您输入的日期。

  3. 新的日期(值)期待一个整数而你正在给它 大于整数的东西。所以它是默认的 当前时间。

  4. 尝试使用DateString或本文档中描述的其他方法: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date