我是 momentJs 新手,所以我需要一些帮助。我正在构建一个表单,用户可以在其中发送特定工作期间的空闲情况。所以在表单中你有一个开始日期、开始时间、结束日期和结束时间。由于我必须从客户端使用 api,我们必须发送这样的日期(示例)“2015-06-17T14:24:36”(中间有“T”)。目前,我收到的日期和时间彼此分开,但最终将它们合并在一起,以便它适合 api 读取日期的方式。
现在我的问题如下。我必须创建一个检查,可以查看输入的开始日期时间和结束日期时间是否有效。例如,开始日期始终必须是结束日期之前的日期(逻辑正确)。但是在 momentJS 中有一个简单的方法可以做到这一点吗?
或者我应该使用其他方法吗?
感谢您的关注,如果我的问题不太清楚,请告诉我,以便我提供额外的信息!
注意:最后应该是这样的:
var start =“2017-06-17T14:24:36”
var end =“2017-07-03T14:24:36”
检查开始日期和结束日期是否有效的函数
结果=真
最佳答案
如果您只需检查 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>
在我的第一个示例中,我使用 moment(String)
接受 ISO 8601 格式输入的解析。
如果您需要解析非 ISO 8601 格式,您可以使用 moment(String, String)
指定输入格式(例如 var mStart = moment(start, 'DD-MM-YYYYTHH:mm:ss');
)。
如果您必须支持多种格式,您可以使用 moment(String, String[])
。正如文档所述 moment(String, String[])
:
- Prefer formats resulting in valid dates over invalid ones.
- Prefer formats that parse more of the string than less and use more of the format than less, i.e. prefer stricter parsing.
- Prefer formats earlier in the array than later.
关于javascript - 检查 momentjs 中的开始日期时间和结束日期时间是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43325147/