2016-03-22 40 views
3

我想创建一个Javascript日期对象,例如。 “明天早上8点”设置为var now = new Date().getTime(),我该如何实现?Javascript:将一个新日期设置为明天上午8点

+2

制作日期实例,在月份中添加1,然后设置小时,分钟,秒和毫秒。 [文档](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) – Pointy

+0

如何在当前日期的月份中添加1? –

+0

对此有很多问题。见http://stackoverflow.com/questions/9444745/javascript-how-to-get-tomorrows-date-in-format-dd-mm-yy和http://stackoverflow.com/questions/3818193/how-to -add-number-of-days-to-today-date – Tushar

回答

7

你可以做到以下几点:

var now = new Date(); 
now.setDate(now.getDate() + 1) 
now.setHours(8); 
now.setMinutes(0); 
now.setMilliseconds(0); 

还要检查this

你还可以:var now = Date("2016-03-23T8:00:00");

而且var now = new Date(2016,03,23,8,0,0,0);

+1

如果我在使用第一块代码时没有弄错,分钟和秒钟将是当前日期(即如果闹钟设置为17:35,它会在第二天8:35响) – Aaron

+0

你是对的我认为。我会解决它,谢谢! – Rana

+0

嗯,根据MDN,你可以[用setSeconds'设置毫秒](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/setSeconds),但[不是反过来](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/setMilliseconds) – Aaron

3

如果你有大量的日期算术的,我可以只强烈推荐使用moment.js

使用此库,您的代码将会短至moment().add(1, 'days').hours(8).startOf('hour')

moment.js与包含JS日期以提供附加方法的'时刻'对象一起工作。 moment()调用返回当前日期时间的一个时刻,因此是相当于new Date()的moment.js。
从那里我们可以使用moment.js方法,如add(quantity, unit),它将持续时间添加到前一个日期。所有这些操作方法都会返回一个修改时刻,这意味着我们可以将它们链接起来
hours()方法根据它的参数既是一个getter也是一个setter;在这里我们给它提供一个数字,这意味着我们将当前的小时部分设置为8.拨打.hours()将返回当前的小时部分。
startOf(unit)会在单位开始时返回一个片刻,这意味着它会将所有较小单位设置为0:moment().startOf('day')将在今天00:00 am返回。

+0

没有moment.js标记,也没有在问题中提到,因此答案应该使用普通的js **和**解释它是如何工作的。 – RobG

+0

你从哪里得到这些规则?有什么可以解释的,并没有通过方法的名称或对提供的链接进行快速检查而显而易见?一个普通的JS答案已经由Rana提供,如果你检查它的评论和编辑,你会看到我试图帮助它变得更好。我都是建设性的批评,但我不认为我可以用你的反馈做很多事情。 – Aaron

+0

[*我如何写出一个好的答案?*](http://stackoverflow.com/help/how-to-answer)。 – RobG

相关问题