This is a noob question:
How to parse a date in format "YYYYmmdd" without external libraries ? If the input string is not in this format I would like to get invalid Date (or undefined if it will be easier).
To format a date to YYYYMMDD in JavaScript, you can use the toLocaleDateString() function in combination with the split() , reverse() , and join() functions. The trick is that, in the UK, dates are formatted in DD/MM/YYYY format, with two digit month and day.
To format a date as YYYYMMDD : Use the getFullYear() , getMonth() and getDate() methods to get the year, month and day of the date.
Re: convert Date from YYYY-MM-DD to MM/DD/YYYY in jQuery/JavaScript. var tempDate = new Date("2021-09-21"); var formattedDate = [tempDate. getMonth() + 1, tempDate.
function parse(str) {     if(!/^(\d){8}$/.test(str)) return "invalid date";     var y = str.substr(0,4),         m = str.substr(4,2),         d = str.substr(6,2);     return new Date(y,m,d); }   Usage:
parse('20120401');   UPDATE:
As Rocket said, months are 0-based in js...use this if month's aren't 0-based in your string
function parse(str) {     if(!/^(\d){8}$/.test(str)) return "invalid date";     var y = str.substr(0,4),         m = str.substr(4,2) - 1,         d = str.substr(6,2);     return new Date(y,m,d); }   UPDATE:
More rigorous checking for validity of date. Adopted HBP's way to validate date.
function parse(str) {     var y = str.substr(0,4),         m = str.substr(4,2) - 1,         d = str.substr(6,2);     var D = new Date(y,m,d);     return (D.getFullYear() == y && D.getMonth() == m && D.getDate() == d) ? D : 'invalid date'; } 
                        A more robust version validating the numbers :
 function parse (str) {         // validate year as 4 digits, month as 01-12, and day as 01-31          if ((str = str.match (/^(\d{4})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])$/))) {            // make a date            str[0] = new Date (+str[1], +str[2] - 1, +str[3]);            // check if month stayed the same (ie that day number is valid)            if (str[0].getMonth () === +str[2] - 1)               return str[0];         }         return undefined;  }   See fiddle at : http://jsfiddle.net/jstoolsmith/zJ7dM/
I recently wrote a much more capable version you can find here : http://jsfiddle.net/jstoolsmith/Db3JM/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With