【问题标题】:How can I get the next time it's 14:00?下一次是 14:00 时我怎样才能得到?
【发布时间】:2016-07-31 04:28:22
【问题描述】:

是否可以使用 Datejs 在 Javascript 中将下一次 14:00(例如)作为Date 对象获取?

文档似乎没有显示这样的示例,尝试next 14:00 似乎并没有真正起作用。

【问题讨论】:

  • 好吧,如果它没有记录,那么它可能不支持它,但你可以自己轻松实现,检查当前 HH 是否大于 14 -> 明天 14:00 获取,如果等于 14 -> 检查分钟是否等于 0。如果 HH 小于 14 -> 今天 14:00 得到
  • 对于一个拥有 4.76 万代表的长期用户来说,缺乏基础研究和思考令人失望。
  • @LightnessRacesinOrbit 你为什么这么说?
  • 请注意,原来的 date.js 大多处于休眠状态。请阅读 the datejs tag wiki,然后查看 moment.js 或使用 RobG 不需要库的最佳答案。

标签: javascript date time datejs


【解决方案1】:

您实际上并不需要为此使用库。您可以创建一个 Date 对象,如果它在 14:00 之后,请将日期设置为明天,然后将时间设置为 14:00。

编辑

原始版本允许从 14:00 到 14:59:59.999 的任何时间,因为它只检查时间。更新后,从 14:00:00.001 到 23:59:59.999 的任何时间都被视为 14:00 之后。

还添加了 Date.js 版本(documentation 是最小的 - 也许有更好的东西)。

// Create a date for now and remember the time
var d = new Date();
var time = +d;

// Set the time to 14:00 and, if earlier than now, add a day
d.setHours(14,0,0,0);
if ( d < time) {
  d.setDate(d.getDate() + 1);
}

document.write('Next 14:00: ' + d)

这是 Date.js 版本。我找不到作为 sn-p 包含的 CDN。

// Equivalent using Date.js
var d = Date.present();
var t = +d;
d.set({hour:14});
if (d < t) {
  d.addDays(1);
}

document.write('<br>' + d3);

或者,一行:

Date.today().set({hour:14}).isBefore(Date.present())? Date.today().addDays(1).set({hour:14}) : Date.today().set({hour:14});

// Or
Date.today().set({hour:14}).addDays(Date.today().set({hour:14}).isBefore(Date.present())? 1:0);

我不推荐单线版本;他们只是在那里表明它可以做到。它们每个创建 3 个日期对象,而其他版本只创建 1 个。

【讨论】:

  • 呃,-1 不够 Datejs
  • @Shoe——很公平,现在怎么样? ;-)
【解决方案2】:

我不知道如何使用 Datejs,但这里有一个纯 JavaScript 的简单解决方案。希望它会有所帮助。此示例获取当前日期并检查它是否已经过了 14:00,如果是,则为第二天的 14:00 创建一个 Date 对象。如果尚未超过 14:00,则为当天 14:00 创建一个 Date 对象。

var currentDate = new Date();
if (currentDate.getHours() >= 14){
    var newDate = new Date(currentDate.getYear(), currentDate.getMonth(), currentDate.getDate()+1, 14, 0, 0, 0);
}
else{
    var newDate = new Date(currentDate.getYear(), currentDate.getMonth(), currentDate.getDate(), 14, 0, 0, 0);
}

【讨论】:

  • 您需要添加另一个if 来检查小时是 14 分钟是 0 的时间,而且他已经提到他使用处理日期的包,无需重写功能。
  • @LightnessRacesinOrbit 好吧,我提到的第一部分可能没用,取决于他想要做什么,但实际上没有理由重新实现日期功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 2015-06-08
  • 1970-01-01
  • 2016-02-13
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多