How to create the date in YYYYMMDDHHMMSS format using JavaScript ? For example, I want to get the date as 20131018064838.
3 Answers
var date = new Date();
alert( date.getFullYear() + ("0" + (date.getMonth() + 1)).slice(-2) + ("0" + date.getDate()).slice(-2) + ("0" + date.getHours() ).slice(-2) + ("0" + date.getMinutes()).slice(-2) + ("0" + date.getSeconds()).slice(-2) );
edit
function pad2(n) { return n < 10 ? '0' + n : n }
var date = new Date();
alert( date.getFullYear().toString() + pad2(date.getMonth() + 1) + pad2( date.getDate()) + pad2( date.getHours() ) + pad2( date.getMinutes() ) + pad2( date.getSeconds() ) );
12 Comments
Alnitak
neat as the
('0' + n).slice(-2) hack is, IMHO it's not very readable and the OP would be far better served with a little pad2 helper function, e.g. function pad2(n) { return n < 10 ? '0' + n : n }Alnitak
p.s. and why +1 the
getHours result?!Butt4cak3
Halfway through line 2 you started using
this instead of date.gurvinder372
@Butt4cak3 made changes as per suggestions
Alnitak
@gurvinder372 congrats - you now have the only correct (standalone) answer!
|
Here's my (ES5 safe) method to add the YYYYMMDDHHMMSS() function to any Date object.
On older browsers, either shim Object.defineProperty or just add the inner function directly to Date.prototype:
Object.defineProperty(Date.prototype, 'YYYYMMDDHHMMSS', {
value: function() {
function pad2(n) { // always returns a string
return (n < 10 ? '0' : '') + n;
}
return this.getFullYear() +
pad2(this.getMonth() + 1) +
pad2(this.getDate()) +
pad2(this.getHours()) +
pad2(this.getMinutes()) +
pad2(this.getSeconds());
}
});
1 Comment
StubbornShowaGuy
A bit subjective perhaps, but (assuming timezone being zero UTC offset is fine, ) I think
new Date().toISOString().slice(-24).replace(/\D/g,'').slice(0, 14); is cleaner since it involves no tinkering with zero-padding or correction of the month number.Please try using prototype method as following.
<script type="text/javascript">
Date.prototype.YYYYMMDDHHMMSS = function () {
var yyyy = this.getFullYear().toString();
var MM = pad(this.getMonth() + 1,2);
var dd = pad(this.getDate(), 2);
var hh = pad(this.getHours(), 2);
var mm = pad(this.getMinutes(), 2)
var ss = pad(this.getSeconds(), 2)
return yyyy + MM + dd+ hh + mm + ss;
};
function getDate() {
d = new Date();
alert(d.YYYYMMDDHHMMSS());
}
function pad(number, length) {
var str = '' + number;
while (str.length < length) {
str = '0' + str;
}
return str;
}
</script>
3 Comments
Alnitak
that's a novel (but inefficient) way of zero padding the numbers... You also omitted to zero pad the time fields.
Alnitak
getting better, but in this case there's no need to pad beyond two digits, and you could then make
pad2 (per the other answer that uses it) an inner function within Date.prototype.YYYYMMDDHHMMSS to avoid polluting the global name space.cpplover - Slw Essencial
thanks for code snippets, I've more customized for debugging purpose. jsfiddle.net/trustfarm/nvvzgax1/4
dt=new Date().toISOString().split('.')[0].replace(/[^\d]/gi,'');setsdtto, (for example):20210809154700new Date.toISOString().replace(/(\.\d{3})|[^\d]/g,'')