Here is a standard way to serialise date as ISO 8601 string in JavaScript:
var now = new Date(); console.log( now.toISOString() ); // outputs '2015-12-02T21:45:22.279Z'
I need just the same output, but without milliseconds. How can I output 2015-12-02T21:45:22Z
?
(new Date).toISOString().replace(/\.\d+/, "")
.
Simple way:
console.log( new Date().toISOString().split('.')[0]+"Z" );
Use slice to remove the undesired part
var now = new Date();
alert( now.toISOString().slice(0,-5)+"Z");
console.log( now.substring(0, now.indexOf('.'))+"Z");
since toISOString() is 24 or 27 characters long. (now = new Date().toISOString();
in my example)
This is the solution:
var now = new Date();
var str = now.toISOString();
var res = str.replace(/\.[0-9]{3}/, '');
alert(res);
Finds the . (dot) and removes 3 characters.
http://jsfiddle.net/boglab/wzudeyxL/7/
You can use a combination of split()
and shift()
to remove the milliseconds from an ISO 8601 string:
let date = new Date().toISOString().split('.').shift() + 'Z'; console.log(date);
shift()
might be overkill especially if you're just trying to get the first value in the array. It's just extra overhead.
or probably overwrite it with this? (this is a modified polyfill from here)
function pad(number) {
if (number < 10) {
return '0' + number;
}
return number;
}
Date.prototype.toISOString = function() {
return this.getUTCFullYear() +
'-' + pad(this.getUTCMonth() + 1) +
'-' + pad(this.getUTCDate()) +
'T' + pad(this.getUTCHours()) +
':' + pad(this.getUTCMinutes()) +
':' + pad(this.getUTCSeconds()) +
'Z';
};
Date.prototype.toISOStringSansMilliseconds
or some such
It is similar to @STORM's answer:
const date = new Date(); console.log(date.toISOString()); console.log(date.toISOString().replace(/[.]\d+/, ''));
/\.\d+/
is also possible.
\.
can be difficult to read sometimes, so I have changed into using [.]
Success story sharing
new Date().toISOString().split('T')[0]
(new Date)
instead of the uglynew Date()
.