Yes, get String.js
by Rumata and then use:
'%04d-%02d-%02d'.sprintf(myDate.getFullYear(),
myDate.getMonth() + 1,
myDate.getDate());
NB: don't forget the + 1
on the month field. The Date
object's month field starts from zero, not one!
If you don't want to use an extra library, a trivial inline function will do the job of adding the leading zeroes:
function date2str(d) {
function fix2(n) {
return (n < 10) ? '0' + n : n;
}
return d.getFullYear() + '-' +
fix2(d.getMonth() + 1) + '-' +
fix2(d.getDate());
}
or even add it to the Date
prototype:
Date.prototype.ISO8601date = function() {
function fix2(n) {
return (n < 10) ? '0' + n : n;
}
return this.getFullYear() + '-' +
fix2(this.getMonth() + 1) + '-' +
fix2(this.getDate());
}
usage (see http://jsfiddle.net/alnitak/M5S5u/):
var d = new Date();
var s = d.ISO8601date();