How can I convert a string to a date in JavaScript?
var st = "date in some format"
var dt = new date();
var dt_st= //st in date format same as dt
var a = "13:15"
var b = toDate(a, "h:m")
//alert(b);
document.write(b);
function toDate(dStr, format) {
var now = new Date();
if (format == "h:m") {
now.setHours(dStr.substr(0, dStr.indexOf(":")));
now.setMinutes(dStr.substr(dStr.indexOf(":") + 1));
now.setSeconds(0);
return now;
} else
return "Invalid Format";
}
Today (2020.05.08) I perform tests for chosen solutions - for two cases: input date is ISO8601 string (Ad,Bd,Cd,Dd,Ed) and input date is timestamp (At, Ct, Dt). Solutions Bd,Cd,Ct not return js Date object as results, but I add them because they can be useful but I not compare them with valid solutions. This results can be useful for massive date parsing.
new Date
(Ad) is 50-100x faster than moment.js (Dd) for all browsers for ISO date and timestampnew Date
(Ad) is ~10x faster than parseDate
(Ed)Date.parse
(Bd) is fastest if wee need to get timestamp from ISO date on all browsersI perform test on MacOs High Sierra 10.13.6 on Chrome 81.0, Safari 13.1, Firefox 75.0. Solution parseDate
(Ed) use new Date(0)
and manually set UTC date components.
let ds = '2020-05-14T00:00Z'; // Valid ISO8601 UTC date
let ts = +'1589328000000'; // timestamp
let Ad = new Date(ds);
let Bd = Date.parse(ds);
let Cd = moment(ds);
let Dd = moment(ds).toDate();
let Ed = parseDate(ds);
let At = new Date(ts);
let Ct = moment(ts);
let Dt = moment(ts).toDate();
log = (n,d) => console.log(`${n}: ${+d} ${d}`);
console.log('from date string:', ds)
log('Ad', Ad);
log('Bd', Bd);
log('Cd', Cd);
log('Dd', Dd);
log('Ed', Ed);
console.log('from timestamp:', ts)
log('At', At);
log('Ct', Ct);
log('Dt', Dt);
function parseDate(dateStr) {
let [year,month,day] = dateStr.split(' ')[0].split('-');
let d=new Date(0);
d.setUTCFullYear(year);
d.setUTCMonth(month-1);
d.setUTCDate(day)
return d;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment-with-locales.min.js"></script>
This snippet only presents used soultions
Results for chrome
©2020 All rights reserved.