如何将小时、分钟、秒设置为GMT日期?

67

我有一个日期对象,想要清除其中的小时、分钟和秒钟。请问如何在Javascript中实现?我的方法有问题吗?

var date = Date("Fri, 26 Sep 2014 18:30:00 GMT");
      date.setHours(0);
      date.setMinutes(0);
      date.setSeconds(0);

期望的结果是

Fri, 26 Sep 2014 00:00:00 GMT

我该如何达成目标?

3个回答

130
根据MDNsetHours 函数实际上接受额外的可选参数来设置分钟、秒和毫秒。 因此,我们可以简单地编写:
// dateString is for example "Fri, 26 Sep 2014 18:30:00 GMT"
function getFormattedDate(dateString) {
   var date = new Date(dateString);
   date.setHours(0, 0, 0);   // Set hours, minutes and seconds
   return date.toString();
}

2
你很棒,这里是最佳答案 :)! - Sergej Fomin
14
要设置毫秒数,您应该编写 date.setHours(0, 0, 0, 0):四个零。 - Gabriel Glenn
6
我喜欢你的方案,它比我的更简洁。 - Manjar

100

您可以使用这个:

// Like Fri, 26 Sep 2014 18:30:00 GMT
var today = new Date();

var myToday = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);

使用构造函数使用实际日期重新创建日期对象。


今天.getDate(); - Arepalli Praveenkumar
8
我已经使用了这段代码来创建一个对象,该对象表示明天午夜的日期和时间 - var tomorrow_midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, 0, 0, 0);只是想与大家分享一下... :) - TheCuBeMan
1
使用theDate.setHours(hours, minutes, seconds, milliseconds)的答案会更好。 - Marco

10
将日期解析为JavaScript,只需使用:
var date = new Date("Fri, 26 Sep 2014 18:30:00 GMT”);

然后使用以下代码将小时、分钟和秒设置为0:

date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);

date.toString() 现在返回您所需的日期


4
那为什么不这样设置 - var date = new Date("Fri, 26 Sep 2014 00:00:00 GMT"),并且节省额外的不必要的代码呢?... - TheCuBeMan
1
@TheCuBeMan 我认为这是因为你需要进行一些字符串操作。在我看来,只做 date.setHours() 部分要简单得多。 - ganders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接