setHours()在字符串时间戳中转换我的Date对象

时间:2015-10-24 00:22:04

标签: javascript date timestamp

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

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

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

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

(随意更新我的帖子以纠正我的坏英语:)

3 个答案:

答案 0 :(得分:5)

这是正常的吗?

我该如何解决这个问题?

您要将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执行类似但不返回此值。我假设在chrome的date.js中找到的SET_LOCAL_DATE_VALUE函数将值赋值给第一个参数。

答案 1 :(得分:0)

您可以使用datejsmomentjs

轻松操作日期

date.js:

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

moment.js

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

答案 2 :(得分:0)

我有类似的情况,而且回答没有解决我的问题......

我做的是:

@Entity
public class Employee {
   @EmbeddedId
   private EmployeeId id;
   @ManyToOne
   @MapsId("personId") // Corresponds to the name of EmployeeId.personId
   private Person person;
   @ManyToOne
   @MapsId("branchId") // Corresponds to the name of EmployeeId.branchId
   private Branch branch;
}

@Embeddable
public class EmployeeId {
    private Long personId; // Corresponds to the type of Person ID
    private Long branchId; // Corresponds to the type of Branch ID
}