在JavaScript中,有時(shí)需要將字符串轉(zhuǎn)換為時(shí)間。這種轉(zhuǎn)換是非常常見(jiàn)的,特別是在處理日期,時(shí)間戳以及時(shí)間差之類的東西時(shí)。本文將為大家講解JavaScript字符串如何轉(zhuǎn)換為時(shí)間,并提供一些常用方法的實(shí)例。
第一種常用方法是通過(guò)Date對(duì)象的構(gòu)造函數(shù)將字符串轉(zhuǎn)換為時(shí)間。例如:
let str = "2021-09-05T12:00:00"; let date = new Date(str); console.log(date);
這里的字符串是遵循ISO 8601規(guī)范的,它包含日期和時(shí)間信息,分別由T字符分隔。日期的格式是"YYYY-MM-DD",時(shí)間的格式是"hh:mm:ss"。將上述字符串傳遞給Date構(gòu)造函數(shù)后,它將返回一個(gè)表示該時(shí)間的日期對(duì)象。 輸出結(jié)果為:
Sun Sep 05 2021 12:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
第二種常用方法是將時(shí)間戳(毫秒數(shù))字符串轉(zhuǎn)換為時(shí)間。例如:
let timestamp = "1630254963000"; let date = new Date(parseInt(timestamp)); console.log(date);
這里需要注意的是,時(shí)間戳字符串在轉(zhuǎn)換為數(shù)字時(shí)可能會(huì)超出JavaScript所支持的最大數(shù)字,因此需要將其轉(zhuǎn)換為整數(shù)。將上述時(shí)間戳字符串傳遞給parseInt函數(shù)可將其轉(zhuǎn)換為1630254963000的整數(shù)值,再將該整數(shù)值作為參數(shù)傳遞給Date構(gòu)造函數(shù)即可得到表示該時(shí)間的日期對(duì)象。輸出結(jié)果為:
Mon Aug 30 2021 22:22:43 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
第三種常用方法是將UTC時(shí)間字符串轉(zhuǎn)換為本地時(shí)間。例如:
let utcStr = "2021-09-05T12:00:00Z"; let date = new Date(utcStr); console.log(date.toLocaleString());
這里的字符串是遵循ISO 8601規(guī)范的,它包含UTC日期和時(shí)間信息,最后有一個(gè)Z字符,表示該時(shí)間為UTC時(shí)間。將上述字符串傳遞給Date構(gòu)造函數(shù)后,它將返回一個(gè)表示UTC時(shí)間的日期對(duì)象。使用toLocaleString方法可將該UTC時(shí)間轉(zhuǎn)換為本地時(shí)間并輸出,輸出結(jié)果為:
2021/9/5 上午8:00:00
除了上述方法外,還可以使用第三方庫(kù)moment.js來(lái)進(jìn)行時(shí)間字符串轉(zhuǎn)換,它提供了許多方便的函數(shù)來(lái)操作日期和時(shí)間。例如,使用moment.js將時(shí)間字符串轉(zhuǎn)換為本地時(shí)間的代碼如下:
let utcStr = "2021-09-05T12:00:00Z"; let date = moment.utc(utcStr).local().toDate(); console.log(date.toLocaleString());
在上述代碼中,首先調(diào)用“moment.utc”函數(shù)將UTC時(shí)間字符串轉(zhuǎn)換為moment對(duì)象;然后調(diào)用“l(fā)ocal”函數(shù)將moment對(duì)象轉(zhuǎn)換為本地時(shí)間的moment對(duì)象;最后調(diào)用“toDate”函數(shù)將moment對(duì)象轉(zhuǎn)換為日期對(duì)象。輸出結(jié)果與上述方法一樣。
總之,以上幾種方法均可將字符串轉(zhuǎn)換為時(shí)間,具體方法選擇需根據(jù)實(shí)際應(yīng)用場(chǎng)景和字符串格式來(lái)決定。JavaScript提供了許多方便的日期和時(shí)間處理函數(shù),可以方便地實(shí)現(xiàn)各種時(shí)間轉(zhuǎn)換操作。