【问题标题】:setHours() convert my Date object in string timestampsetHours() 将我的 Date 对象转换为字符串时间戳
【发布时间】:2016-01-23 15:09:34
【问题描述】:

我尝试将日期设置为午夜以简化我的日期操作,为此我编写了这部分代码:

var now = new Date();
today = now.setHours(0,0,0,0);
console.log(now, today);

我很惊讶地看到 now 包含一个 Date 对象和 today 一个时间戳。当我想使用 getMonth() 或其他日期的函数时,这会带来错误。用时间戳重新创建一个 Date 对象是很有趣的。

正常吗?我该如何解决这个问题?

(请随时更新我的​​帖子以纠正我糟糕的英语:)

【问题讨论】:

  • stackoverflow.com/questions/1050720/… 很相似,但没有提供答案。
  • 为什么不直接使用你创建的now反对?
  • 那么实际的问题是什么?你到底想修复什么?除非是精神科医生,否则如何对“是否正常”这个问题给出客观答案?

标签: javascript date timestamp


【解决方案1】:

正常吗?

是的

我该如何解决这个问题?

您将now.setHours(0,0,0,0)的返回值分配给today

也许你正在寻找的是这样的:

var now = new Date();

var today = new Date();
today.setHours(0,0,0,0);

这样,setHours 将作用于您希望设置小时的值。这是使用setHours的主要方式。

其他详情

  • specification 似乎没有提及返回值。 w3schools 等其他网站也可以。
  • Chromium setHours source 显示一个正在返回的值,尽管 other functions 执行类似的操作不返回此值。我认为 chromium 的 date.js 中的 SET_LOCAL_DATE_VALUE 函数正在将值分配给第一个参数。

【讨论】:

  • 请不要引用 w3schools。有language specification 作为标准参考,MDN 作为示例。
  • 谢谢。我理解我的错误。
【解决方案2】:

我也遇到过类似的情况,pcnate 的回答并没有解决我的问题...

我所做的是:

var today = new Date();
today = new Date(today.setHours(0,0,0,0));
console.log('Date: '+today);

【讨论】:

    【解决方案3】:

    您可以使用datejsmomentjs 轻松操作日期

    date.js:

       Date.today().set({ hour : 0 });
    

    moment.js

       moment().set({ "hour": 0, "minute" : 0, "second": 0});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 2016-11-27
      • 2021-06-28
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多