在javascript中处理日期的更好方法

时间:2015-04-21 11:12:21

标签: javascript jquery asp.net date

我有一个表单,用户必须输入一个开始日期和一个结束日期。之后,我必须计算此日期的结果才能在UI上显示状态:

  • 如果日期是过去的,则状态为" DONE"
  • 如果日期是将来,状态是"要完成"
  • 如果今天是两个日期之后,状态为"正在进行"

我如何轻松地计算?我在表格中的日期是格式:04/21/2015。

您是否建议我通过更改格式(04/21/2015 => 20150421)来比较日期并进行比较?或者使用JS的日期?或其他什么?

提前致谢

4 个答案:

答案 0 :(得分:1)

获取两个这样的日期对象:

// parse a date in mm/dd/yyyy format
function parseDate(input) {
  var parts = input.split('/');
  // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
  return new Date(parts[2], parts[0]-1, parts[1]); // Note: months are 0-based
}

然后使用常规运算符< > ==

进行比较

答案 1 :(得分:0)

您可以为输入日期创建日期对象,为当前日期创建另一个日期对象,然后只需比较它们。

检查dateObject以提供正确的日期字符串格式:

var inpDate = $('input').val();
var d = new Date(inpDate);
var today = new Date();

if (inpDate > today) {
   return "TO BE DONE";
} else .... 

答案 2 :(得分:0)

你试过http://momentjs.com/吗?真正易于使用,转换和格式化可以节省您添加更多JavaScript代码的时间,但是通过添加库可以抵消它。

答案 3 :(得分:0)

function getStatusByDate(startDate, endDate) {
    var currentTime = new Date().getTime();
    var startTime = new Date(startDate).getTime();
    var endTime = new Date(endDate).getTime();
    console.log(startTime, endTime);
    if (startTime < endTime && endTime < currentTime) {
        return ('DONE');
    } else if (startTime < endTime && endTime > currentTime && startTime < currentTime) {
        return ('IN PROGRESS');
    } else if (startTime < endTime && startTime > currentTime) {
        return ('TO BE DONE');
    } else {
        return ('INVALID INPUT');
    }
}