如何通过 moment() 判断第二天是第二天
How to judge the day is next day via moment()
我使用Moment来处理代码中的时间。
这里有一个问题:
我想判断两次,如果现在是第二天last_take_time
如果我这样写:
if not last_take_time? or (now.dayOfYear() - last_take_time.dayOfYear() is 1 )
do_something()
当last_take_time是一年的结束日时,出现问题。
我是JavaScript和Moment的新手,但我认为有一个正确的方法来判断这一点。
谢谢!
如果您使用dayOfWeek()
那么添加一个额外的子句来测试周日/周一的棘手情况是相当容易的:
if(last_take_time && (now.dayOfWeek() - last_take_time.dayOfWeek() == 1
|| (now.dayOfWeek() == 1 && last_take_time.dayOfWeek() == 7)))
do_something();
这比处理dayOfYear()
更容易,因为必须处理闰年。
编辑
啊,好吧,我明白了,你的观点很有道理——当日子相隔一周以上时,上面的答案会返回误报。我们可以添加一个子句来解释这一点:
if(last_take_time && now.diff(last_take_time, 'days') < 3
&& (now.dayOfWeek() - last_take_time.dayOfWeek() == 1
|| (now.dayOfWeek() == 1 && last_take_time.dayOfWeek() == 7)))
do_something();
附加子句使用 moment.js
方法 diff()
: 链接到文档以说明突出显示的问题。
如果你有两个约会,并且想看看一个是不是第二天,只需在"较早"的日期上添加一天,将时间设置为通用值(例如零)并测试时间值,例如:
// Return true if d1 is the day after d0
function isTomorrow(d0, d1) {
d0 = new Date(+d0);
d0.setDate(d0.getDate() + 1);
return d0.setHours(0,0,0,0) == new Date(+d1).setHours(0,0,0,0);
}
document.write(
isTomorrow(new Date(2016,1,28), new Date(2016,1,29)) // true
+ '<br>' + isTomorrow(new Date(2016,1,28), new Date(2016,2,1)) // false
+ '<br>' + isTomorrow(new Date(2016,1,28,23,59), new Date(2016,1,29,0,1)) // true
+ '<br>' + isTomorrow(new Date(2016,1,28,0,0), new Date(2016,1,29,23,59)) // true
);
我建议:
if not last_take_time? or (now.startOf('day').add(1, 'day').isSame(last_take_time.startOf('day')) )
do_something()
我认为这比以前的解决方案简单一些:
你想知道的是现在的一天和另一个时间的一天之间的区别。
不是:#24 小时周期在 2 次之间。
let now = moment();
let otherDay = moment("some other day");
let daysDiff = otherDay.startOf('day').diff(now, 'days');
if(daysDiff == 1) {
// now is tomorrow relative to otherDay
}
相关文章:
- 下拉选择可自动更改第二个下拉选择
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 为什么不'在JQuery中找到第二个css选择器的工作
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- 使用默认js函数的javascript中的日期的第二天
- jQuery UI 日期选择器 - 禁用公共假期、周末、第二天上午 10 点之后,只允许周二、周三和周四作为可选日期
- 如何通过 moment() 判断第二天是第二天
- 日期选择器,第二个日期是从第一个日期算起的X天
- 代码点火器下拉顺序,第一个下拉列表中选择的值musn'第二天中午
- 显示当前关闭时间/第二天开放时间的倒计时
- 使用getDay()显示第二天
- 如何找到第二天使用javascript
- 在javascript中获取一周的前一天和第二天
- 使用JQuery通过时间差想知道第二次是同一天还是另一天
- 如何制作";结账日期";第二天自动填充";入住日期";使用pickadate.j
- 使用javascript验证表单,我有开始和结束日期选择器,它应该只允许当前日期和有效时间,而不允许第二天
- JavaScript,获取第二天的日期
- j查询日历日期范围最小第二个日历的日期 +5 天
- 这是怎么回事?一天没问题,第二天就“未定义”
- 在javascript中最接近第二天和时间