我正在尝试在javascript上构建if语句;
if (nextProcessingDate > today ) {
//do something
}
为nextProcessingDate 分配了一个时间戳,即09/07/2014 12:10:17
我使用以下代码将今天的时间戳分配给今天变量
/*script start*/
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
var s = today.getSeconds();
var m = today.getMinutes();
var h = today.getHours();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
if (s < 10) {
s = '0' + s
}
if (m < 10) {
m = '0' + m
}
if (h < 10) {
h = '0' + h
}
today = dd + '/' + mm + '/' + yyyy + ' ' + h + ':' + m + ':' + s;
/*script end*/
现在我真正想要做的是&#34;如果nextprocessingDate比今天更大,再加上一天,那就做点什么&#34;
if (nextProcessingDate > (today + 1){
//do something
}
感谢您的帮助,这里是小提琴链接http://jsfiddle.net/E5vG4/1/
更新 所以,这里是更新的小提琴,似乎在某种程度上起作用。 http://jsfiddle.net/E5vG4/9/
现在的问题是它只返回true,处理日期时间戳等于或超过24小时,我需要在上午09:30进行测试,在这种情况下,它会返回false。
从下一个处理日期剥离时间会以某种方式修复它吗?
答案 0 :(得分:1)
你绝对不应该使用字符串来比较日期。
您可以尝试从nextProcessingDate创建Date对象:
var nextProcessingDate = '09/07/2014 12:10:17';
var d = Date.parse(nextProcessingDate);
if (d > (new Date().getTime() + (1000 * 60 * 60 * 24))) {
alert("after");
} else {
alert("before");
}
答案 1 :(得分:1)
日期处理是一个痛苦的JavaScript,一旦你考虑到跨越午夜,夏令时变化和闰日的时间段,编写自己的解决方案是各种棘手的。
我建议选择一个既定的日期处理库来做这种事情。
我一直在使用moment.js并且发现它非常棒。
您的代码将变为:
if(moment(nextProcessingDate).isAfter(moment(today).add('days',1))) {
// do something
}
或者,更简洁:
if(moment('09/07/2014 14:05:17').isAfter(moment().add('days',1))) {
// do something
}
答案 2 :(得分:1)
答案 3 :(得分:1)
if (nextProcessingDate > (today + 1){
//do something
}
只需在秒后添加1。
如果你只是想检查一个令人兴奋的时间戳是否比今天的日期+ 1天更大,你应该像你对月份所做的那样。因此,如果我09年的那天,dd将变为10个。
所以,如果我理解你的问题,请试试这个:
var dd = today.getDate() + 1;