摘要:寫(xiě)在前面前兩天寫(xiě)了一篇常見(jiàn)的獲取時(shí)間戳,今天來(lái)一篇續(xù)集吧,日期和時(shí)間戳的互轉(zhuǎn)預(yù)備知識(shí)知道什么是時(shí)間戳即距離年月日時(shí)分秒的毫秒數(shù)如果你要用到的是秒,那也行,單位問(wèn)題而已。同樣的道理要會(huì)把時(shí)間戳轉(zhuǎn)化成我們想要的日期格式。
寫(xiě)在前面
前兩天寫(xiě)了一篇《常見(jiàn)的Javascript獲取時(shí)間戳》,今天來(lái)一篇續(xù)集吧,日期和時(shí)間戳的互轉(zhuǎn)
預(yù)備知識(shí)知道什么是時(shí)間戳:即距離1970年01月01日00時(shí)00分00秒的毫秒數(shù)(如果你要用到的是秒,那也行,單位問(wèn)題而已)。
知道為什么需要把日期轉(zhuǎn)化成時(shí)間戳:對(duì)于前端來(lái)說(shuō),接觸的到的時(shí)間多是2018-08-08這種形式的,但是在拉取后端數(shù)據(jù)時(shí),一般要把時(shí)間轉(zhuǎn)化成時(shí)間戳再傳過(guò)去。同樣的道理要會(huì)把時(shí)間戳轉(zhuǎn)化成我們想要的日期格式。
時(shí)間 -> 時(shí)間戳 (2018/08/09 10:10:10 -> 1533780610000 )通常我們用到的時(shí)間格式分兩種2018/08/09 10:10:10或者2018-08-09 10:10:10,幸運(yùn)的是js的Date對(duì)象很好的支持了這種格式的時(shí)間,通常我們可以通過(guò)
new Date("2018/08/09 10:10:10").getTime()或者 new Date("2018-08-09 10:10:10").getTime()來(lái)獲取到時(shí)間戳
但是!!!!
ie對(duì)于第二種不支持
如下圖:
因此,請(qǐng)采用以下的代碼
let time = "2018-08-09 10:10:10" time = time.replace(/-/g, "/") // 把所有-轉(zhuǎn)化成/ let timestamp = new Date(time).getTime()時(shí)間戳 -> 時(shí)間 (1533780610000 -> 2018/08/09 10:10:10)
這里要用到Date對(duì)象的一系列g(shù)et方法,思路是先根據(jù)時(shí)間戳new一個(gè)Date對(duì)象,然后通過(guò)一系列g(shù)et方法分別拿到年月日時(shí)分秒,再拼接字符串。
function timestampToTime (timestamp) { const dateObj = new Date(+timestamp) // ps, 必須是數(shù)字類(lèi)型,不能是字符串, +運(yùn)算符把字符串轉(zhuǎn)化為數(shù)字,更兼容 const year = dateObj.getFullYear() // 獲取年, const month = dateObj.getMonth() + 1 // 獲取月,必須要加1,因?yàn)樵路菔菑?開(kāi)始計(jì)算的 const date = dateObj.getDate() // 獲取日,記得區(qū)分getDay()方法是獲取星期幾的。 const hours = pad(dateObj.getHours()) // 獲取時(shí), pad函數(shù)用來(lái)補(bǔ)0 const minutes = pad(dateObj.getMinutes()) // 獲取分 const seconds = pad(dateObj.getSeconds()) // 獲取秒 return year + "-" + month + "-" + date + " " + hours + ":" + minutes + ":" + seconds } function pad(str) { return +str >= 10 ? str : "0" + str } timestampToTime(1533773345000) timestampToTime(1533780610000)總結(jié)
有幾個(gè)小點(diǎn)需要注意
為了兼容,將橫線換成斜杠(2018-08-09 10:10:10 => 2018/08/09 10:10:10)
獲取月份時(shí),要加1
getDate獲取日期,getDay是用來(lái)獲取是一個(gè)星期的第幾天
根據(jù)需求做適當(dāng)?shù)难a(bǔ)0,2018-8-9 08:09:05 要比 2018-8-9 8:9:5好看的多。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/110161.html
摘要:時(shí)間與日期處理從屬于筆者的現(xiàn)代開(kāi)發(fā)系列文章,涉及到的引用資料聲明在學(xué)習(xí)與實(shí)踐資料索引中。可以通過(guò)靜態(tài)構(gòu)造方法很容易的創(chuàng)建,定義了與之間的轉(zhuǎn)化關(guān)系時(shí)差類(lèi)以年月日來(lái)表示日期差,而以秒與毫秒來(lái)表示時(shí)間差適用于處理與機(jī)器時(shí)間。 Java 時(shí)間與日期處理 從屬于筆者的現(xiàn)代 Java 開(kāi)發(fā)系列文章,涉及到的引用資料聲明在 Java 學(xué)習(xí)與實(shí)踐資料索引中。 Java 時(shí)間與日期處理 在 Java 8...
摘要:格式化日期時(shí)間格式化日期時(shí)間場(chǎng)景將當(dāng)前日期時(shí)間或者特定日期時(shí)間格式化輸出為特定格式的字符串常用于人性化展示信息說(shuō)明返回給定時(shí)間戳格式化后所產(chǎn)生的日期時(shí)間字符串如果沒(méi)有給出時(shí)間戳則默認(rèn)使用本地當(dāng)前時(shí)間備注格式說(shuō)明返回值示例位數(shù)字完整表示的年份 showImg(https://segmentfault.com/img/remote/1460000019351405); 格式化日期時(shí)間 d...
摘要:傳入的格式要求詳見(jiàn)日期格式打印結(jié)果作為構(gòu)造函數(shù)作為構(gòu)造函數(shù)可以通過(guò)指針實(shí)例化一個(gè)的實(shí)例對(duì)象,這個(gè)對(duì)象是一個(gè)日期對(duì)象。所有實(shí)例的屬性和方法即是繼承于構(gòu)造函數(shù)原型上的屬性和方法。 前言 之前寫(xiě)博客都是在github的搭建的個(gè)人博客上,最近開(kāi)始遷移博客上的內(nèi)容到segmentfalut。一方面是想重新整理下寫(xiě)過(guò)的博客。另一方面也是想與大家多多交流,找到現(xiàn)階段自己的不足。第一篇文章是關(guān)于Dat...
摘要:前言前面一篇文章寫(xiě)了如何安全的使用里面介紹了如何處理日期時(shí)間,以及如何保證線程安全,及其介紹了在中的處理時(shí)間日期默認(rèn)就線程安全的類(lèi)。引入了全新的日期時(shí)間格式工具,線程安全而且使用方便。 前言 前面一篇文章寫(xiě)了《SimpleDateFormat 如何安全的使用?》, 里面介紹了 SimpleDateFormat 如何處理日期/時(shí)間,以及如何保證線程安全,及其介紹了在 Java 8 中的處...
摘要:正確的解釋是允許在相等比較中進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,而不允許。參考資料小議下字符串比較大小中的強(qiáng)制類(lèi)型轉(zhuǎn)換核心概念類(lèi)型轉(zhuǎn)換對(duì)象和方法隱式類(lèi)型轉(zhuǎn)換小結(jié) 開(kāi)胃菜 先說(shuō)一個(gè)題外話,我在工作中遇到一個(gè)問(wèn)題,需要比較 08:00 和 09:00 的大小,最后我找到三種方法: 在兩個(gè)字符串前后各拼接相同的年月日和秒,拼成完整的時(shí)間格式進(jìn)行比較: var head = 2016-01-01 var fo...
閱讀 2591·2021-11-18 10:02
閱讀 2627·2021-11-15 11:38
閱讀 3699·2021-11-12 10:36
閱讀 696·2021-11-12 10:34
閱讀 2888·2021-10-21 09:38
閱讀 1479·2021-09-29 09:48
閱讀 1492·2021-09-29 09:34
閱讀 1088·2021-09-22 10:02