【问题标题】:Why does new Date().setHours(18) return a number instead of a date?为什么 new Date().setHours(18) 返回一个数字而不是日期?
【发布时间】:2017-04-30 03:11:51
【问题描述】:

为什么第一行代码返回一个“日期”类型的对象,而第二行返回一个“数字”?

根据文档 (http://www.w3schools.com/jsref/jsref_sethours.asp) setHours() 应该只是更改日期对象的小时值,而不是转换它。

代码:

  var date = new Date();

  var date2 =date.setHours(19);

谢谢!

【问题讨论】:

标签: javascript date typescript ionic2


【解决方案1】:

setHours() 方法根据本地时间设置指定日期的小时数,并返回从 1970 年 1 月 1 日 00:00:00 UTC 到更新的 Date 实例表示的时间的毫秒数。

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

【讨论】:

    【解决方案2】:

    根据文档 (http://www.w3schools.com/jsref/jsref_sethours.asp) setHours() 应该只是更改日期对象的小时值,而不是转换它。

    那个文件说:

    返回值:一个数字,表示日期对象与 1970 年 1 月 1 日午夜之间的毫秒数

    它不会转换日期对象。它修改现有的,然后返回一个值。

    您之前创建的日期对象仍然存在,其小时值已修改,并且对它的任何引用(例如您在名为 date 的变量中仍然拥有的那个)仍然可用。

    【讨论】:

    • 此答案应参考ECMA-262MDN
    • @RobG — 虽然 W3Schools 有很多问题,但在这里它是正确的,而且它是 OP 已经在阅读的文档。
    【解决方案3】:

    这很简单,只需阅读documentation 即可。

    请看下面该方法返回的内容。

    返回值

    从 1970 年 1 月 1 日 00:00:00 UTC 到 更新日期。

    【讨论】:

      【解决方案4】:

      您需要将答案包含在new Date() 中。像这样:

      var date2 = new Date(date.setHours(19));
      

      【讨论】:

        猜你喜欢
        • 2019-07-12
        • 1970-01-01
        • 2017-05-25
        • 2018-08-24
        • 2016-10-28
        • 1970-01-01
        • 2021-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多