繁体   English   中英

用JavaScript处理日期的更好方法

[英]Better way to deal with date in javascript

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

  • 如果日期是过去的日期,则状态为“完成”
  • 如果日期是将来的日期,则状态为“待完成”
  • 如果今天在两个日期之间,则状态为“进行中”

如何轻松计算? 我的日期格式为:04/21/2015。

您是否要求我通过更改格式(04/21/2015 => 20150421)比较日期并进行比较? 还是使用JS的Date? 还是其他?

提前致谢

获得两个日期对象,如下所示:

// 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
}

然后使用常规运算符进行比较< > ==

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

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

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

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

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

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');
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM