检查开始日期时间和结束日期时间是否在momentjs中有效

时间:2017-04-10 13:54:14

标签: javascript date datetime momentjs

我是新手,所以我需要一些帮助。我正在构建一个表单,用户可以在某个工作期间发送其可用性。所以在表单中你有一个startDate,startTime,endDate和endTime。由于我必须从客户端使用api,我们必须发送日期(例如)“2015-06-17T14:24:36”(中间有'T')。目前我收到彼此分开的日期和时间,但最后将它们合并在一起,以便符合api阅读日期的方式。

现在我的问题如下。我必须创建一个检查,我可以看到输入startdate-time和enddate-time是否有效。例如,startdate总是必须是结束日期之前的日期(相当逻辑右)。但是在momentJS中有一个简单的方法吗?

或者我应该使用其他方法吗?

非常感谢,如果我的问题不是很明确,请告诉我,以便我提供更多信息!

注意:最后它应该是这样的:

var start =“2017-06-17T14:24:36”

var end =“2017-07-03T14:24:36”

检查开始日期和结束日期是否有效的功能

结果= true

1 个答案:

答案 0 :(得分:1)

如果您只需检查startDate是否在endDate之前,则可以使用isAfter

这是一份工作样本:

var start = "2017-06-17T14:24:36";
var end = "2017-07-03T14:24:36";

function checkDate(start, end){
 var mStart = moment(start);
 var mEnd = moment(end);
 return mStart.isBefore(mEnd);
}

console.log(checkDate(start, end));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

在我的第一个例子中,我正在使用接受ISO 8601格式输入的moment(String)解析。

如果您需要解析非ISO 8601格式,可以使用moment(String, String)指定输入格式(例如var mStart = moment(start, 'DD-MM-YYYYTHH:mm:ss');)。

如果您必须支持多种格式,可以使用moment(String, String[])。正如文档所述moment(String, String[])

  
      
  • 首选格式,使有效日期超过无效日期。
  •   
  • 首选格式解析更多的字符串而不是更少的格式,而不是使用更少的格式,即更喜欢更严格的解析。
  •   
  • 首选阵列中较早的格式。
  •