我是新手,所以我需要一些帮助。我正在构建一个表单,用户可以在某个工作期间发送其可用性。所以在表单中你有一个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
答案 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[])
:
- 首选格式,使有效日期超过无效日期。
- 首选格式解析更多的字符串而不是更少的格式,而不是使用更少的格式,即更喜欢更严格的解析。
- 首选阵列中较早的格式。