我通常不希望显示UTC日期,因为客户不喜欢在头上进行转换。要显示本地 ISO日期,请使用以下功能:
function toLocalIsoString(date, includeSeconds) {
function pad(n) { return n < 10 ? '0' + n : n }
var localIsoString = date.getFullYear() + '-'
+ pad(date.getMonth() + 1) + '-'
+ pad(date.getDate()) + 'T'
+ pad(date.getHours()) + ':'
+ pad(date.getMinutes()) + ':'
+ pad(date.getSeconds());
if(date.getTimezoneOffset() == 0) localIsoString += 'Z';
return localIsoString;
};
上面的函数省略了时区偏移信息(除非本地时间恰好是UTC),所以我使用下面的函数在单个位置显示本地偏移。如果希望每次都显示偏移量,也可以将其输出附加到上述函数的结果中:
function getOffsetFromUTC() {
var offset = new Date().getTimezoneOffset();
return ((offset < 0 ? '+' : '-')
+ pad(Math.abs(offset / 60), 2)
+ ':'
+ pad(Math.abs(offset % 60), 2))
};
toLocalIsoString
用途pad
。如果需要,它几乎可以像任何pad功能一样工作,但是为了完整起见,这就是我使用的方法:
// Pad a number to length using padChar
function pad(number, length, padChar) {
if (typeof length === 'undefined') length = 2;
if (typeof padChar === 'undefined') padChar = '0';
var str = "" + number;
while (str.length < length) {
str = padChar + str;
}
return str;
}