Angular中關(guān)于時間的操作總結(jié)

創(chuàng)建時間

使用new Date(),可以看見有5種構(gòu)造函數(shù)

new Date()
    console.log(new Date()); // 當(dāng)前時間
    console.log(new Date('2015-08-12 12:30'));// 字符串
    console.log(new Date(12345679));//時間戳
    console.log(new Date(2018, 3, 20, 12, 30));//指定年月日等

結(jié)果

如果要創(chuàng)建一個時間為當(dāng)日的日期不包含時間的值

 console.log(new Date(new Date().toLocaleDateString()));
結(jié)果

時間計(jì)算

通??梢赞D(zhuǎn)換成時間戳的方式進(jìn)行計(jì)算

    const endTime = new Date(new Date().toLocaleDateString());
    let d = endTime.valueOf(); // 時間戳
    d -= 7 * 24 * 60 * 60 * 1000;
    const startTime = new Date(d);
    console.log(startTime);
    console.log(endTime);
    console.log(d);
image.png

時間轉(zhuǎn)換

自身還是有很多方法可以使用的
    console.log(new Date().toTimeString());
    console.log(new Date().toLocaleDateString());
    console.log(new Date().toDateString());
    console.log(new Date().getTime());
和想要的有點(diǎn)不一樣

Angular 自帶的時間管道

<p>現(xiàn)在的時間是{{today | date:'yyyy-MM-dd HH:mm:ss'}}</p>
image.png

第三方插件

moment.js

這是一個很強(qiáng)大的時間插件,這里用一個應(yīng)用場景來演示。

nodejs上的時間和我本地的時間總是相差8個小時,這導(dǎo)致我每次發(fā)送時間到后臺時,nodejs將時間轉(zhuǎn)化成字符串傳送出去的時候總是和我服務(wù)器上的時間相差8小時。
node上顯示出來時間


node上時間

本地系統(tǒng)顯示時間


本地時間

發(fā)送前控制臺打印出來
發(fā)送前控制臺打印出來

瀏覽器網(wǎng)絡(luò)中監(jiān)測顯示


瀏覽器網(wǎng)絡(luò)中監(jiān)測顯示

解決方案

nodejs只有在發(fā)送時間類型的數(shù)據(jù)時會進(jìn)行轉(zhuǎn)換,導(dǎo)致相差8個小時,但是我發(fā)送前就將其轉(zhuǎn)換成字符串,就不會造成這樣的結(jié)果了。
所以對angular的http進(jìn)行封裝,在發(fā)送前將body中的時間類型轉(zhuǎn)換成字符串類型

    post(url: string, body?: any, params?: any,headers?:any) {
        this.begin();
        return this.http
            .post(url, this.parseBody(body) || null, {
                headers:this.parseHeaders(headers),
                params: this.parseParams(params)
            })
    }
  parseBody(body: any) {
    if (body) {
      for (const key in body) {
        if (body[key]) {
          const _data = body[key];
          // 將時間轉(zhuǎn)化為字符串
          if (moment.isDate(_data)) {
            body[key] = moment(_data).format('YYYY-MM-DD HH:mm:ss');
          }
        }
      }
    }
    return body;
  }
完美解決

其中用到了moment.js 的兩個方法,一個時判斷是否時時間類型moment.isDate(_data)另一個時轉(zhuǎn)換成字符串moment(_data).format('YYYY-MM-DD HH:mm:ss');
關(guān)于更多用法可以參考官網(wǎng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,679評論 0 4
  • ??引用類型的值(對象)是引用類型的一個實(shí)例。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,219評論 0 1
  • 8月30日 星期二 寶劍侍從 最近抽到挺多的牌,不是太喜歡,低端,簡單,意思不大的感覺,揮舞著寶劍不知所措;不知道...
    回老家養(yǎng)貓閱讀 732評論 0 0
  • 如果說,有沒有一本書是描繪夢想的,我第一想到的是《牧羊少年奇幻之旅》如果有一本書是描繪實(shí)現(xiàn)夢想的,那就是《朝圣》巧...
    木木叔叔閱讀 1,166評論 0 3
  • 即將畢業(yè)了,今后的路該如何走,我卻茫然無措。 現(xiàn)在的自己就想一個矛盾糾結(jié)體,是繼續(xù)自己的專業(yè),可自己可能會做的不好...
    S青春的余熱閱讀 320評論 0 0

友情鏈接更多精彩內(nèi)容