|
/** |
|
* to-iso-local-string-1.0.0.js |
|
* Convert Date object to ISO 8601 Local String. |
|
* |
|
* @version 1.0.0 |
|
* @author think49 |
|
* @url https://gist.github.com/think49/910b913051cc94e765f1bc347d5089db |
|
* @license http://www.opensource.org/licenses/mit-license.php (The MIT License) |
|
*/ |
|
|
|
'use strict'; |
|
var toISOLocalString = (function (toString, TypeError, padStart) { |
|
padStart = typeof padStart === 'function' ? Function.prototype.call.bind(padStart) : (function (String, Array) { |
|
var toLength = (function (Number, floor, abs, min) { |
|
return function toLength (length) { |
|
length = Number(length); |
|
|
|
if (length !== length) { |
|
return 0; |
|
} |
|
|
|
length = floor(abs(length)); |
|
|
|
if (length <= 0) { |
|
return 0; |
|
} |
|
|
|
return min(length, 9007199254740991); |
|
}; |
|
}(Number, Math.floor, Math.abs, Math.min)); |
|
|
|
return function padStart (string, maxLength /* [, fillString] */) { |
|
var diffLength, fillString, fillLength, remainder; |
|
|
|
if (string === null || typeof string === 'undefined') { |
|
throw new TypeError('String.prototype.padStart called on null or undefined'); |
|
} |
|
|
|
string = String(string); |
|
diffLength = toLength(maxLength) - string.length; |
|
|
|
if (diffLength < 1) { |
|
return string; |
|
} |
|
|
|
fillString = arguments[2]; |
|
fillString = typeof fillString === 'undefined' ? ' ' : String(fillString); |
|
|
|
if (!fillString) { // If fillString is the empty String |
|
return string; |
|
} |
|
|
|
fillLength = fillString.length; |
|
remainder = diffLength % fillLength; |
|
|
|
return Array((diffLength - remainder) / fillLength + 1).join(fillString) + fillString.slice(0, remainder) + string; |
|
}; |
|
}(String, Array)); |
|
|
|
function toTimezoneString (date) { |
|
var offset = date.getTimezoneOffset(), sign, minutes; |
|
|
|
if (offset === 0) { |
|
return 'Z'; |
|
} |
|
|
|
sign = offset < 0 ? (offset *= -1, '+') : '-'; |
|
minutes = offset % 60; |
|
|
|
return sign + padStart((offset - minutes) / 60, 2, 0) + ':' + padStart(minutes, 2, 0); |
|
} |
|
|
|
return function toISOLocalString (date) { |
|
if (toString.call(date) !== '[object Date]') { |
|
throw new TypeError('this is not a Date object.'); |
|
} |
|
|
|
return padStart(date.getFullYear(), 4, 0) + '-' + padStart(date.getMonth() + 1, 2, 0) + '-' + padStart(date.getDate(), 2, 0) + 'T' + padStart(date.getHours(), 2, 0) + ':' + padStart(date.getMinutes(), 2, 0) + ':' + padStart(date.getSeconds(), 2, 0) + '.' + padStart(date.getMilliseconds(), 3, 0) + toTimezoneString(date); |
|
}; |
|
}(Object.prototype.toString, TypeError, String.prototype.padStart)); |