28 lines
1009 B
JavaScript
28 lines
1009 B
JavaScript
|
'use strict';
|
||
|
// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
|
||
|
var $export = require('./_export')
|
||
|
, fails = require('./_fails')
|
||
|
, getTime = Date.prototype.getTime;
|
||
|
|
||
|
var lz = function(num){
|
||
|
return num > 9 ? num : '0' + num;
|
||
|
};
|
||
|
|
||
|
// PhantomJS / old WebKit has a broken implementations
|
||
|
$export($export.P + $export.F * (fails(function(){
|
||
|
return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
|
||
|
}) || !fails(function(){
|
||
|
new Date(NaN).toISOString();
|
||
|
})), 'Date', {
|
||
|
toISOString: function toISOString(){
|
||
|
if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');
|
||
|
var d = this
|
||
|
, y = d.getUTCFullYear()
|
||
|
, m = d.getUTCMilliseconds()
|
||
|
, s = y < 0 ? '-' : y > 9999 ? '+' : '';
|
||
|
return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
|
||
|
'-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
|
||
|
'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
|
||
|
':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
|
||
|
}
|
||
|
});
|