โดยทั่วไปฉันไม่ต้องการแสดงวันที่ UTC เนื่องจากลูกค้าไม่ชอบทำ Conversion ในหัวของพวกเขา เพื่อแสดงวันที่ 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 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;
}