我們在JavaScript里常常需要轉(zhuǎn)換時間的格式,以便于更好地展示和處理。JavaScript通過內(nèi)置的Date對象可以很方便地獲取當前時間和處理時間格式。然而Date對象的轉(zhuǎn)換并不是那么簡潔明了,下面我們將詳細討論Date對象的轉(zhuǎn)換問題。
首先,我們需要了解Date對象的構(gòu)造函數(shù)接受不同參數(shù)的形式。例如我們可以將字符串表示的日期作為參數(shù)傳入構(gòu)造函數(shù):
let dateFromString = new Date('2022-8-31');
console.log(dateFromString); // Wed Aug 31 2022 00:00:00 GMT+0800 (中國標準時間)
我們也可以通過傳入數(shù)值的方式,對應(yīng)毫秒數(shù)或是時間戳:
let dateFromNumber = new Date(1630339200000);
console.log(dateFromNumber); // Wed Aug 31 2022 00:00:00 GMT+0800 (中國標準時間)
使用Date對象所提供的API函數(shù),我們可以將Date對象轉(zhuǎn)換為多種不同的字符串格式。下面列出了其中幾種常見的字符串格式:
console.log(dateFromString.toDateString()); // Wed Aug 31 2022
console.log(dateFromString.toISOString()); // 2022-08-30T16:00:00.000Z
console.log(dateFromString.toLocaleDateString()); // 2022/8/31
console.log(dateFromString.toString()); // Wed Aug 31 2022 00:00:00 GMT+0800 (中國標準時間)
console.log(dateFromString.toTimeString()); // 00:00:00 GMT+0800 (中國標準時間)
console.log(dateFromString.toUTCString()); // Tue, 30 Aug 2022 16:00:00 GMT
我們也可以通過手動拼接字符串的方式將Date對象轉(zhuǎn)換為我們期望的格式:
let month = dateFromString.getMonth() + 1< 10 ? '0' + (dateFromString.getMonth() + 1) : (dateFromString.getMonth() + 1);
let day = dateFromString.getDate()< 10 ? '0' + dateFromString.getDate() : dateFromString.getDate();
let hour = dateFromString.getHours()< 10 ? '0' + dateFromString.getHours() : dateFromString.getHours();
let minute = dateFromString.getMinutes()< 10 ? '0' + dateFromString.getMinutes() : dateFromString.getMinutes();
let second = dateFromString.getSeconds()< 10 ? '0' + dateFromString.getSeconds() : dateFromString.getSeconds();
let formattedDate = `${dateFromString.getFullYear()}-${month}-${day} ${hour}:${minute}:${second}`;
console.log(formattedDate); // 2022-08-31 00:00:00
Date對象還可以通過set方法設(shè)置日期和時間,稍加變動我們也可以實現(xiàn)一個簡單的日期加減的函數(shù):
function addDays(date, days) {
let newDate = new Date(date);
newDate.setDate(newDate.getDate() + days);
return newDate;
}
console.log(addDays(dateFromString, 3)); // Sat Sep 03 2022 00:00:00 GMT+0800 (中國標準時間)
總之,Date對象可以很方便地處理時間格式的轉(zhuǎn)換問題,我們可以通過構(gòu)造函數(shù)傳入不同的參數(shù)、使用其提供的API函數(shù)以及手動拼接字符串等方式進行轉(zhuǎn)換。但需要注意的是,由于JavaScript在處理時間上存在一些奇怪的問題,因此對于不同的場景需謹慎地選擇合適的轉(zhuǎn)換方式。