是否可以在javascript中进行日期验证?

时间:2014-03-30 16:25:08

标签: javascript date string-comparison

我必须检查两个日期是否相差超过两天。例如,2014年1月14日和2014年1月15日将符合标准,因为只有一天的差异,但2014年1月14日和01/18/2014不会,因为后者有4天差异。日期是字符串格式,所以我尝试了各种数据,但无法成功。总而言之,我想知道是否可以创建一个if语句,它减去字符串格式的两个日期的值,如果值大于' n'则给出错误。谢谢!

3 个答案:

答案 0 :(得分:1)

一种解决方案是使用简单的字符串解析为每个日期创建一个Javascript Date对象(http://www.w3schools.com/js/js_obj_date.asp),使用.getTime()函数获取以毫秒为单位的值,并检查它是否大于1000 x 60 x 60 x 24 x 2。

答案 1 :(得分:0)

尝试

new Date("MM/DD/YYYY") - new Date("MM/DD/YYYY")

这将以毫秒为单位返回一个数字。

答案 2 :(得分:0)

// https://gist.github.com/remino/1563878
// Converts millseconds to object with days, hours, minutes ans seconds.
function convertMS(ms) {
  var d, h, m, s;
  s = Math.floor(ms / 1000);
  m = Math.floor(s / 60);
  s = s % 60;
  h = Math.floor(m / 60);
  m = m % 60;
  d = Math.floor(h / 24);
  h = h % 24;
  return { d: d, h: h, m: m, s: s };
};

var start_date = '04/15/2014';
var end_date = '04/16/2014';

var diff = convertMS(Date.parse(end_date) - Date.parse(start_date));

if(diff.d > 1) {
  console.log('The difference is more than one day!');
}
else {
  console.log('The difference is just one day and therefore accepted!');
}

请参阅js小提琴:http://jsfiddle.net/E7bCF/11/
查看js小提琴的一天以上差异:http://jsfiddle.net/E7bCF/9/