欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node.js使用Moment.js js 時(shí)間計(jì)算方法示例小結(jié)

 更新時(shí)間:2023年05月08日 09:19:46   作者:囧小喵i  
這篇文章主要介紹了node.js使用Moment.js js 時(shí)間計(jì)算方法,結(jié)合實(shí)例形式分析了Moment.js js模塊時(shí)間計(jì)算的常用操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下

概述

moment 是一個(gè)使用非常方便的 Node.js 模塊,可以幫助我們處理和格式化日期和時(shí)間。這里就來總結(jié)一下moment的常見用法。

首先是安裝:

npm i moment

其次是引入:

const moment = require('moment'); //common.js 模式
//或者ES6模式: import moment from 'moment'

基本用法

Moment.js中文文檔系列之八時(shí)間段(Durations)

  1. 創(chuàng)建時(shí)間段:duration()
  2. 人性化:humanize()
  3. 毫秒:milliseconds()
  4. 秒:seconds()
  5. 分:minutes()
  6. 小時(shí):hours()
  7. 天:days()
  8. 月:months()
  9. 年:years()
  10. 增加時(shí)間:add()
  11. 減少時(shí)間:subtract()
  12. 單位轉(zhuǎn)換:as()
  13. 取值:get()
  14. 轉(zhuǎn)換為JSON:toJSON()
  15. 是否時(shí)間段:isDuration()

Moment.js中也有時(shí)間段對象。一個(gè)時(shí)間moment被定義為一個(gè)單點(diǎn)時(shí)刻,而時(shí)間段被定義為一個(gè)時(shí)間長度。

時(shí)間段沒有定義開始和結(jié)束時(shí)間,它們是一種前后的關(guān)系。一個(gè)時(shí)間段更類似于“2小時(shí)”,而不是“今天下午的2點(diǎn)到4點(diǎn)之間”。

例如,一年可以被定義為366天、365天、365.25天、12個(gè)月或52周。計(jì)算兩個(gè)時(shí)間之間的天或年時(shí),使用moment#diff 比使用Durations更好。

1. 創(chuàng)建時(shí)間段:duration()

moment.duration(Number, String);
moment.duration(Number);
moment.duration(Object);
moment.duration(String);

創(chuàng)建一個(gè)時(shí)間段,通過moment.duration()方法并傳入一個(gè)毫秒級的時(shí)間戳。

moment.duration(100); // 100 毫秒

如果你想在創(chuàng)建時(shí)間段時(shí)使用非毫秒級的單位,你可以像這樣傳入時(shí)間單位:

moment.duration(2, 'seconds');
moment.duration(2, 'minutes');
moment.duration(2, 'hours');
moment.duration(2, 'days');
moment.duration(2, 'weeks');
moment.duration(2, 'months');
moment.duration(2, 'years');

moment#addmoment#subtract方法中使用簡寫形式在這兒也同樣適用。

KeyShorthand
yearsy
monthsM
weeksw
daysd
hoursh
minutesm
secondss
millisecondsms

moment#add一樣,你可以按需要傳入一個(gè)包含多個(gè)單位的對象。

moment.duration({
    seconds: 2,
    minutes: 2,
    hours: 2,
    days: 2,
    weeks: 2,
    months: 2,
    years: 2
});

格式是一個(gè)以冒號(hào)分隔的時(shí)、分、秒的字符串,如23:59:59。表示天的數(shù)字,使用點(diǎn)號(hào)分隔,如7.23:59:59。秒的部分還支持這樣23:59:59.999 。

moment.duration('23:59:59');
moment.duration('23:59:59.999');
moment.duration('7.23:59:59.999');
moment.duration('23:59');          //added in 2.3.0

2. 人性化:humanize()

moment.duration().humanize();

有時(shí),你想像moment#from一樣友好顯示,但不想創(chuàng)建兩個(gè)時(shí)間。

moment.duration(1, "minutes").humanize(); // a minute
moment.duration(2, "minutes").humanize(); // 2 minutes
moment.duration(24, "hours").humanize();  // a day

默認(rèn),其返回值是無后綴的。如果需要帶后,可以傳一個(gè)參數(shù)。

moment.duration(1, "minutes").humanize(true); // in a minute

如果是相對當(dāng)前時(shí)間的前綴,可以傳入一個(gè)負(fù)數(shù)。

moment.duration(-1, "minutes").humanize(true); // a minute ago

3. 毫秒:milliseconds()

moment.duration().milliseconds();
moment.duration().asMilliseconds();

獲取一個(gè)數(shù)字表示的毫秒數(shù),使用moment.duration().milliseconds(),其返回是一個(gè)0?999之間的數(shù)字。

moment.duration(500).milliseconds(); // 500
moment.duration(1500).milliseconds(); // 500
moment.duration(15000).milliseconds(); // 0

如果要獲取的是一個(gè)毫秒級的時(shí)間段長度,使用moment.duration().asMilliseconds()方法代替。

moment.duration(500).asMilliseconds(); // 500
moment.duration(1500).asMilliseconds(); // 1500
moment.duration(15000).asMilliseconds(); // 15000

4. 秒:seconds()

moment.duration().seconds();
moment.duration().asSeconds();

獲取一個(gè)數(shù)字表示的秒數(shù),使用moment.duration().seconds(),其返回是一個(gè)0?59之間的數(shù)字。

moment.duration(500).seconds(); // 0
moment.duration(1500).seconds(); // 1
moment.duration(15000).seconds(); // 15

如果要獲取的是一個(gè)秒級的時(shí)間段長度,使用moment.duration().asSeconds()方法代替。

moment.duration(500).asSeconds(); // 0.5
moment.duration(1500).asSeconds(); // 1.5
moment.duration(15000).asSeconds(); // 15

5. 分:minutes()

moment.duration().minutes();
moment.duration().asMinutes();

獲取其它的時(shí)間段,moment.duration().minutes()可以獲取分鐘數(shù)(0?59),moment.duration().asMinutes()可以獲取表示分的長度。

6. 小時(shí):hours()

moment.duration().hours();
moment.duration().asHours();

獲取其它的時(shí)間段,moment.duration().hours()可以獲取小時(shí)數(shù)(0?23),moment.duration().asHours()可以獲取表示小時(shí)的長度。

7. 天:days()

moment.duration().days();
moment.duration().asDays();

獲取其它的時(shí)間段,moment.duration().days()可以獲取天數(shù)(0?23),moment.duration().asHours()可以獲取表示天的長度。

8. 月:months()

moment.duration().months();
moment.duration().asMonths();

獲取其它的時(shí)間段,moment.duration().months()可以獲取月數(shù)(0?11),moment.duration().asMonths()可以獲取表示月的長度。

注意:一月的時(shí)間長度被定義為30天。

9. 年:years()

moment.duration().years();
moment.duration().asYears();

獲取其它的時(shí)間段,moment.duration().years()可以獲取年份,moment.duration().asYears()可以獲取表示年的長度。

注意:一年的時(shí)間長度被定義為365天。

10. 增加時(shí)間:add()

moment.duration().add(Number, String);
moment.duration().add(Number);
moment.duration().add(Duration);
moment.duration().add(Object);

對原時(shí)間段增加時(shí)間。

在創(chuàng)建時(shí)間段時(shí)使用的簡寫形式的時(shí)間單位,在這里也同樣適用??梢缘诙€(gè)參數(shù)中傳入。

var a = moment.duration(1, 'd');
var b = moment.duration(2, 'd');
a.add(b).days(); // 3

11. 減少時(shí)間:subtract()

moment.duration().subtract(Number, String);
moment.duration().subtract(Number);
moment.duration().subtract(Duration);
moment.duration().subtract(Object);

對原時(shí)間段減少時(shí)間。

在創(chuàng)建時(shí)間段時(shí)使用的簡寫形式的時(shí)間單位,在這里也同樣適用??梢缘诙€(gè)參數(shù)中傳入。

var a = moment.duration(3, 'd');
var b = moment.duration(2, 'd');
a.subtract(b).days(); // 1

12. 單位轉(zhuǎn)換:as()

moment.duration().as(String);

替換Duration#asX等方法,可以使用Duration#as('x'),moment#add中使用的單位簡寫,在這里也同樣適用。

duration.as('hours');
duration.as('minutes');
duration.as('seconds');
duration.as('milliseconds');

13. 取值:get()

moment.duration().get(String);

替換Duration#x等方法,可以使用Duration#get('x')moment#add中使用的單位簡寫,在這里也同樣適用。

duration.get('hours');
duration.get('minutes');
duration.get('seconds');
duration.get('milliseconds');

14. 轉(zhuǎn)換為JSON:toJSON()

moment.duration().toJSON();

將時(shí)間段對象序列化成JSON時(shí),其會(huì)按ISO8601標(biāo)準(zhǔn)的字符串進(jìn)行轉(zhuǎn)換。

JSON.stringify({
    postDuration : moment.duration(5, 'm')
}); // '{"postDuration":"PT5M"}'

15. 是否時(shí)間段:isDuration()

moment.isDuration(obj);

檢查是否是一個(gè)有效的時(shí)間段對象,使用moment.isDuration()

moment.isDuration() // false
moment.isDuration(new Date()) // false
moment.isDuration(moment()) // false
moment.isDuration(moment.duration()) // true
moment.isDuration(moment.duration(2, 'minutes')) // true

總結(jié) :

moment.duration(now())? ? 獲取當(dāng)前時(shí)間
moment.duration(now()).asHours()  //獲取當(dāng)前時(shí)間的小時(shí)時(shí)間段
asMilliseconds()//毫秒 
asSeconds()//秒
asMinutes()//分
asHours()//時(shí)
asDays()//天
asMonths()//月
asYears()//年

不加 as 的時(shí)候,是獲取時(shí)間值

附:

一個(gè)使用 moment 模塊計(jì)算時(shí)間差的示例:

const moment = require('moment');
const start = moment('2023-05-01 09:00:00', 'YYYY-MM-DD HH:mm:ss');
const end = moment();
const diff = end.diff(start);
console.log(moment.duration(diff).asMinutes()); // 輸出兩個(gè)時(shí)間之間間隔的分鐘數(shù)

在這個(gè)示例中,首先引入了 moment 模塊,并使用 moment() 方法創(chuàng)建了兩個(gè)日期對象 startend。其中,start 表示起始日期和時(shí)間,使用 moment() 方法可以從標(biāo)準(zhǔn)的日期字符串或 JavaScript Date 對象創(chuàng)建日期對象。end 則表示當(dāng)前時(shí)間,通過直接調(diào)用moment() 創(chuàng)建當(dāng)前時(shí)間的日期對象。

然后,使用 diff() 方法計(jì)算 endstart 之間的時(shí)間差,將結(jié)果保存到變量 diff 中。接著,將 diff 傳遞給 duration() 方法,創(chuàng)建一個(gè)持續(xù)時(shí)間對象,并使用 asMinutes() 方法獲取該持續(xù)時(shí)間以分鐘為單位的值。

最后,將兩個(gè)時(shí)間之間的間隔分鐘數(shù)輸出到控制臺(tái)上。

相關(guān)文章

  • nodejs遞歸文件夾獲取所有文件路徑實(shí)例

    nodejs遞歸文件夾獲取所有文件路徑實(shí)例

    這篇文章主要為大家介紹了nodejs遞歸文件夾獲取所有文件路徑實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • nodejs實(shí)現(xiàn)發(fā)出蜂鳴聲音(系統(tǒng)報(bào)警聲)的方法

    nodejs實(shí)現(xiàn)發(fā)出蜂鳴聲音(系統(tǒng)報(bào)警聲)的方法

    這篇文章主要介紹了nodejs實(shí)現(xiàn)發(fā)出蜂鳴聲音(系統(tǒng)報(bào)警聲)的方法,結(jié)合實(shí)例形式分析了nodejs發(fā)出蜂鳴聲的原理及具體應(yīng)用方法,需要的朋友可以參考下
    2017-01-01
  • NodeJS后端開發(fā)操作文件之讀寫文件

    NodeJS后端開發(fā)操作文件之讀寫文件

    這篇文章主要介紹了NodeJS后端開發(fā)操作文件之讀寫文件,操作文件是服務(wù)端一個(gè)基礎(chǔ)的功能,也是做后端開發(fā)的必備能力之一,操作文件主要包括讀和寫。而這些功能NodeJS都已經(jīng)提供了對應(yīng)的方法
    2022-06-06
  • 詳解koa2學(xué)習(xí)中使用 async 、await、promise解決異步的問題

    詳解koa2學(xué)習(xí)中使用 async 、await、promise解決異步的問題

    這篇文章主要介紹了詳解koa2學(xué)習(xí)中使用 async 、await、promise解決異步的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • node.js中的url.parse方法使用說明

    node.js中的url.parse方法使用說明

    這篇文章主要介紹了node.js中的url.parse方法使用說明,本文介紹了url.parse的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 命令行批量截圖Node腳本示例代碼

    命令行批量截圖Node腳本示例代碼

    這篇文章主要給大家介紹了關(guān)于命令行批量截圖Node腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • node.js讀寫json文件的方法

    node.js讀寫json文件的方法

    這篇文章介紹了node.js讀寫json文件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • nodejs高大上的部署方式(PM2)

    nodejs高大上的部署方式(PM2)

    這篇文章主要介紹了nodejs高大上的部署方式(PM2) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • windows系統(tǒng)下安裝npm(Node.js)方法教程

    windows系統(tǒng)下安裝npm(Node.js)方法教程

    在Windows環(huán)境下進(jìn)行Node.js的安裝并不是一件復(fù)雜的事情,但是在安裝過程中需要注意一些細(xì)節(jié),下面這篇文章主要給大家介紹了關(guān)于windows系統(tǒng)下安裝npm(Node.js)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • node登錄生成token并驗(yàn)證的實(shí)現(xiàn)

    node登錄生成token并驗(yàn)證的實(shí)現(xiàn)

    token校驗(yàn)作為項(xiàng)目里的必要項(xiàng),其重要性不言而喻,本文主要介紹了node登錄生成token并驗(yàn)證的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02

最新評論