1. 程式人生 > >前端.時間戳&&dateformat時間格式化

前端.時間戳&&dateformat時間格式化

emmmm,最近幾個月因為準備實習和專案,需要和其他人線上交流的原因,基本上筆記都在有道雲筆記裡了。部落格都積灰了。。。。
今天記一下的是時間戳與時間格式化的運用。
——————————————————————————————————————————————

先是實現的時間戳函式

Date.parse(time)//time中需帶有日期資訊,格式為字串,如"2018/03/15" ,"2018-03-15", "Jan 5, 1996 08:47:00"
new Date().getTime()//Date物件即可呼叫該方法

兩種方法獲得的返回都為 與1970年1月1日午夜之間的毫秒數之差,
其中Date.prase(time)所求得的為time中的時間與1970年1月1日午夜的毫秒差,且精確至秒,
new Date().getTime()所求得為現在時間與1970年1月1日午夜的毫秒差,
相比而言Date.parse(time)會要相對而言靈活一些

注意點:
1)Date.parse(),()中為空時輸出為NaN,但可以被dateformat格式化,格式化之後輸出一樣為現在的時間
2)time的格式為”xxxx-xx-xx”時,所求的時間差將從早上8:00開始計算時間差,因為在此格式時是按UTC時區計算
3)time資料型別需為字串

———————————————————————————————————————————————————
再是dataformat時間格式化
因為js並不自帶dateformat函式,自寫的dateformat函式各異,所以在下就直接引用的是正在做的、基於react的專案中的一段程式碼,其中dateformat函式是node_modules中dateformat包寫好的函式,因為有230行,此處不貼原始碼了,因為是基於react的一個demo,在此只記錄一下思路,不會貼完整程式碼

resExp.data.data = resExp.data.data
      .map(v => {
        v.lessonsTime  =
        Date.parse("2018-03-05")+(7*(`${v.weeks_no}`-1)+(`${v.week}`-1))*24 * 3600 * 1000
        console.log(Date.parse("2018-03-05")+"||||"+new Date().getTime())
        console.log(dataformat(Date.parse())+"||||"+dataformat(new
Date().getTime())) })

此處是呼叫一處資訊介面,介面資訊呼叫後儲存在resExp.data.data中,map函式為react的遍歷方法,此處不需要深究。
demo的目的是求出考試的準確日期,已知開學日期為2018-03-05,介面資訊中存有周數和星期數,。
${v.weeks_no} 為週數 ${v.week} 為星期數
${} 為react呼叫變數的格式,不需要理會
控制檯輸出結果為
這裡寫圖片描述
正如上面所說,prase方法精確值秒,time的格式為”xxxx-xx-xx”時,所求的時間差將從早上8:00開始計算時間差,因為在此格式時是按UTC時區計算。如果是獲取準確時間需要跳過這個八小時的坑,可換時間的格式解決,
如“xxxx/xx/xx”。或在時間資訊中新增時區資訊。

以上。