admin管理员组

文章数量:1430704

Im new to momentJs so I need a bit of help here. I am building a form where the user can send in their availabilities for a certain work period. So in the form you have a startDate, startTime, endDate and endTime. Due to the api that I have to use from a client we have to send the date like this (example) "2015-06-17T14:24:36" (with the 'T' in the middle). Currently I receive the date and the time seperate from eachother but merging them together in the end so it fits the api's way of reading date.

Now my question is as follow. I have to create a check where I can see if the input startdate-time and enddate-time are valid. For example the startdate always has to be a date BEFORE the end date (pretty logic right). But is there an easy way to do this in momentJS?

Or should I use another method?

Thanks in regard and if my question is not quite clear please let me know so I can provide extra information!

NOTE: in the end it should be something like this:

var start = "2017-06-17T14:24:36"

var end = "2017-07-03T14:24:36"

Function that checks if the start and end dates are valid

Result = true

Im new to momentJs so I need a bit of help here. I am building a form where the user can send in their availabilities for a certain work period. So in the form you have a startDate, startTime, endDate and endTime. Due to the api that I have to use from a client we have to send the date like this (example) "2015-06-17T14:24:36" (with the 'T' in the middle). Currently I receive the date and the time seperate from eachother but merging them together in the end so it fits the api's way of reading date.

Now my question is as follow. I have to create a check where I can see if the input startdate-time and enddate-time are valid. For example the startdate always has to be a date BEFORE the end date (pretty logic right). But is there an easy way to do this in momentJS?

Or should I use another method?

Thanks in regard and if my question is not quite clear please let me know so I can provide extra information!

NOTE: in the end it should be something like this:

var start = "2017-06-17T14:24:36"

var end = "2017-07-03T14:24:36"

Function that checks if the start and end dates are valid

Result = true

Share Improve this question asked Apr 10, 2017 at 13:54 Tom LuijtenTom Luijten 1951 gold badge2 silver badges12 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 4

If you simply have to check that startDate is before endDate you can use isAfter.

Here a working sample:

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./ajax/libs/moment.js/2.18.1/moment.min.js"></script>


In my first example I'm using moment(String) parsing that accepts input in ISO 8601 format.

If you need to parse non ISO 8601 format you can use moment(String, String) specifying input format (e.g. var mStart = moment(start, 'DD-MM-YYYYTHH:mm:ss');).

If you have to support multiple formats you can use moment(String, String[]). As docs states 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.

本文标签: javascriptCheck if start datetime and end datetime are valid in momentjsStack Overflow