比较JS中的两个日期
Posted
技术标签:
【中文标题】比较JS中的两个日期【英文标题】:Compare two dates in JS 【发布时间】:2011-12-20 18:31:25 【问题描述】:我想将用户的生日与今天的日期进行比较,并获取两者之间的天数。他们输入的生日将以 12/02/1987 的形式在 text
类型的输入框中输入在我的 JS 文件中,我的代码如下所示:
function validateDOB(element)
var valid = false;
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //do that January is NOT represented by 0!
var yyyy = today.getFullYear();
if (dd < 10)
dd = '0' + dd
if (mm < 10)
mm = '0' + mm
var today = mm + '/' + dd + '/' + yyyy;
alert(today);
if (element.value != today)
var days = 0;
var difference = 0;
Christmas = new Date("December 25, 2011");
today = new Date();
difference = today - Christmas
days = Math.round(difference / (1000 * 60 * 60 * 24)-1);
alert(days);
valid = true;
我想比较element.value
而不是使用“圣诞节”...我该怎么做?
当我输入difference = today - element.value
时,它不会向我显示差异。警报框显示为NaN
。
【问题讨论】:
Compare 2 dates with javascript 的可能重复项 @widor 不,我的 Q 是特定的...... 你的问题很具体,是的,但是这个问题回答了它。 @Blender - 真正的问题(尽管它的标题)似乎是“为什么difference = today - element.value
返回NaN
?”。链接的问题试图确定一个日期是否大于、小于或等于另一个日期。这个问题是关于确定两个日期之间的天数。日期比较已在此处正确完成,因此答案并没有真正帮助。真正的答案是在比较之前将字符串解析为日期。
【参考方案1】:
我编写了一个名为 Moment.js 的轻量级日期库来处理这样的事情。
var birthday = moment('12/02/1987', 'MM-DD-YYYY');
var inputDate = moment(element.value, 'MM-DD-YYYY');
var diff = birthday.diff(inputDate, 'days');
http://momentjs.com/docs/#/displaying/difference/
【讨论】:
Moment 为日期格式和操作带来了很多痛苦。很棒的工作。 瞬间是世界上最好的东西。 此时此刻,震撼! 非常好的插件。处理日期和地区是一件很痛苦的事情。 美丽的图书馆,约会之痛一去不复返!【参考方案2】:您需要先将 element.value
解析为日期:
difference = today - new Date(element.value);
http://jsfiddle.net/gilly3/3DKfy/
【讨论】:
以上是关于比较JS中的两个日期的主要内容,如果未能解决你的问题,请参考以下文章