Javascript作為一種前端語(yǔ)言,常常需要對(duì)日期進(jìn)行處理,其中最常見的就是把數(shù)字轉(zhuǎn)換成日期。本文詳細(xì)介紹了如何使用Javascript將數(shù)字轉(zhuǎn)換成日期,并提供了多個(gè)實(shí)例來(lái)說明。
首先,我們需要知道日期是以1970-01-01 00:00:00 UTC為基準(zhǔn)的毫秒數(shù),也就是說,任何一個(gè)日期都可以轉(zhuǎn)換為從這個(gè)基準(zhǔn)時(shí)間點(diǎn)開始的毫秒數(shù)。因此,將毫秒數(shù)轉(zhuǎn)換為日期就是把這個(gè)基準(zhǔn)時(shí)間點(diǎn)加上對(duì)應(yīng)的毫秒數(shù)。
例如,以下代碼將一個(gè)毫秒數(shù)轉(zhuǎn)換為日期:
const timestamp = 1585948800000; // 2020-04-04 00:00:00 UTC const date = new Date(timestamp); console.log(date); // 輸出:Sat Apr 04 2020 08:00:00 GMT+0800 (China Standard Time)可以看到,以上代碼輸出的日期是2020年4月4日。因?yàn)槲业臅r(shí)區(qū)是東八區(qū),所以輸出的時(shí)間比UTC時(shí)間晚8小時(shí)。 現(xiàn)在,我們?cè)賮?lái)看看如何將一個(gè)數(shù)字轉(zhuǎn)換成日期。如果這個(gè)數(shù)字是指從基準(zhǔn)時(shí)間點(diǎn)開始的毫秒數(shù),那么我們可以直接使用前面介紹的方法將其轉(zhuǎn)換成日期。例如:
const number = 1585948800000; // 2020-04-04 00:00:00 UTC const date = new Date(number); console.log(date); // 輸出:Sat Apr 04 2020 08:00:00 GMT+0800 (China Standard Time)這里的number就是一個(gè)毫秒數(shù),因此直接使用new Date(number)就可以將其轉(zhuǎn)換成日期了。 如果這個(gè)數(shù)字不是毫秒數(shù),而是一個(gè)由年月日時(shí)分秒等組成的數(shù)字,那么我們需要進(jìn)行一些計(jì)算,將其轉(zhuǎn)換成對(duì)應(yīng)的毫秒數(shù),然后再用前面介紹的方法將其轉(zhuǎn)換成日期。 例如,以下代碼將一個(gè)由年月日時(shí)分秒組成的數(shù)字轉(zhuǎn)換成日期:
const number = 20200723111523; const year = Math.floor(number / 100000000); // 年份 const month = Math.floor((number % 100000000) / 1000000) - 1; // 月份,注意要減1 const day = Math.floor((number % 1000000) / 10000); // 日 const hour = Math.floor((number % 10000) / 100); // 小時(shí) const minute = Math.floor(number % 100); // 分鐘 const date = new Date(year, month, day, hour, minute); console.log(date); // 輸出:Thu Jul 23 2020 11:15:00 GMT+0800 (China Standard Time)可以看到,以上代碼先將數(shù)字分解成年月日時(shí)分秒等部分,然后將它們傳入new Date()中,得到了對(duì)應(yīng)的日期。 最后,需要注意的是,Javascript中的日期對(duì)象是以本地時(shí)區(qū)為基準(zhǔn)的,因此在處理日期時(shí)需要注意時(shí)區(qū)的影響。如果要將日期轉(zhuǎn)換成UTC時(shí)間,可以使用以下代碼:
const date = new Date(); const timestamp = date.getTime(); // 得到毫秒數(shù) const utcTimestamp = timestamp - date.getTimezoneOffset() * 60 * 1000; // 減去本地時(shí)區(qū)的偏移量 const utcDate = new Date(utcTimestamp); console.log(utcDate); // 輸出UTC時(shí)間以上代碼將本地時(shí)間轉(zhuǎn)換成UTC時(shí)間,通過減去本地時(shí)區(qū)的偏移量來(lái)實(shí)現(xiàn)。需要注意的是,getTimezoneOffset()得到的是分鐘數(shù),因此需要將它轉(zhuǎn)換成毫秒數(shù)再進(jìn)行計(jì)算。 總之,日期在Javascript中是一個(gè)常見的問題,通過本文的介紹,我們可以掌握如何將數(shù)字轉(zhuǎn)換成日期,并熟練運(yùn)用相關(guān)方法處理日期問題。