node.js使用Moment.js js 時間計算方法示例小結
概述
moment 是一個使用非常方便的 Node.js 模塊,可以幫助我們處理和格式化日期和時間。這里就來總結一下moment的常見用法。
首先是安裝:
npm i moment
其次是引入:
const moment = require('moment'); //common.js 模式
//或者ES6模式: import moment from 'moment'基本用法
Moment.js中文文檔系列之八時間段(Durations)
- 創(chuàng)建時間段:
duration() - 人性化:
humanize() - 毫秒:
milliseconds() - 秒:
seconds() - 分:
minutes() - 小時:
hours() - 天:
days() - 月:
months() - 年:
years() - 增加時間:
add() - 減少時間:
subtract() - 單位轉(zhuǎn)換:
as() - 取值:
get() - 轉(zhuǎn)換為JSON:
toJSON() - 是否時間段:
isDuration()
Moment.js中也有時間段對象。一個時間moment被定義為一個單點時刻,而時間段被定義為一個時間長度。
時間段沒有定義開始和結束時間,它們是一種前后的關系。一個時間段更類似于“2小時”,而不是“今天下午的2點到4點之間”。
例如,一年可以被定義為366天、365天、365.25天、12個月或52周。計算兩個時間之間的天或年時,使用moment#diff 比使用Durations更好。
1. 創(chuàng)建時間段:duration()
moment.duration(Number, String); moment.duration(Number); moment.duration(Object); moment.duration(String);
創(chuàng)建一個時間段,通過moment.duration()方法并傳入一個毫秒級的時間戳。
moment.duration(100); // 100 毫秒
如果你想在創(chuàng)建時間段時使用非毫秒級的單位,你可以像這樣傳入時間單位:
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#add和moment#subtract方法中使用簡寫形式在這兒也同樣適用。
| Key | Shorthand |
|---|---|
| years | y |
| months | M |
| weeks | w |
| days | d |
| hours | h |
| minutes | m |
| seconds | s |
| milliseconds | ms |
像moment#add一樣,你可以按需要傳入一個包含多個單位的對象。
moment.duration({
seconds: 2,
minutes: 2,
hours: 2,
days: 2,
weeks: 2,
months: 2,
years: 2
});格式是一個以冒號分隔的時、分、秒的字符串,如23:59:59。表示天的數(shù)字,使用點號分隔,如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.02. 人性化:humanize()
moment.duration().humanize();
有時,你想像moment#from一樣友好顯示,但不想創(chuàng)建兩個時間。
moment.duration(1, "minutes").humanize(); // a minute moment.duration(2, "minutes").humanize(); // 2 minutes moment.duration(24, "hours").humanize(); // a day
默認,其返回值是無后綴的。如果需要帶后,可以傳一個參數(shù)。
moment.duration(1, "minutes").humanize(true); // in a minute
如果是相對當前時間的前綴,可以傳入一個負數(shù)。
moment.duration(-1, "minutes").humanize(true); // a minute ago
3. 毫秒:milliseconds()
moment.duration().milliseconds(); moment.duration().asMilliseconds();
獲取一個數(shù)字表示的毫秒數(shù),使用moment.duration().milliseconds(),其返回是一個0?999之間的數(shù)字。
moment.duration(500).milliseconds(); // 500 moment.duration(1500).milliseconds(); // 500 moment.duration(15000).milliseconds(); // 0
如果要獲取的是一個毫秒級的時間段長度,使用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();
獲取一個數(shù)字表示的秒數(shù),使用moment.duration().seconds(),其返回是一個0?59之間的數(shù)字。
moment.duration(500).seconds(); // 0 moment.duration(1500).seconds(); // 1 moment.duration(15000).seconds(); // 15
如果要獲取的是一個秒級的時間段長度,使用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();
獲取其它的時間段,moment.duration().minutes()可以獲取分鐘數(shù)(0?59),moment.duration().asMinutes()可以獲取表示分的長度。
6. 小時:hours()
moment.duration().hours(); moment.duration().asHours();
獲取其它的時間段,moment.duration().hours()可以獲取小時數(shù)(0?23),moment.duration().asHours()可以獲取表示小時的長度。
7. 天:days()
moment.duration().days(); moment.duration().asDays();
獲取其它的時間段,moment.duration().days()可以獲取天數(shù)(0?23),moment.duration().asHours()可以獲取表示天的長度。
8. 月:months()
moment.duration().months(); moment.duration().asMonths();
獲取其它的時間段,moment.duration().months()可以獲取月數(shù)(0?11),moment.duration().asMonths()可以獲取表示月的長度。
注意:一月的時間長度被定義為30天。
9. 年:years()
moment.duration().years(); moment.duration().asYears();
獲取其它的時間段,moment.duration().years()可以獲取年份,moment.duration().asYears()可以獲取表示年的長度。
注意:一年的時間長度被定義為365天。
10. 增加時間:add()
moment.duration().add(Number, String); moment.duration().add(Number); moment.duration().add(Duration); moment.duration().add(Object);
對原時間段增加時間。
在創(chuàng)建時間段時使用的簡寫形式的時間單位,在這里也同樣適用??梢缘诙€參數(shù)中傳入。
var a = moment.duration(1, 'd'); var b = moment.duration(2, 'd'); a.add(b).days(); // 3
11. 減少時間:subtract()
moment.duration().subtract(Number, String); moment.duration().subtract(Number); moment.duration().subtract(Duration); moment.duration().subtract(Object);
對原時間段減少時間。
在創(chuàng)建時間段時使用的簡寫形式的時間單位,在這里也同樣適用??梢缘诙€參數(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();
將時間段對象序列化成JSON時,其會按ISO8601標準的字符串進行轉(zhuǎn)換。
JSON.stringify({
postDuration : moment.duration(5, 'm')
}); // '{"postDuration":"PT5M"}'15. 是否時間段:isDuration()
moment.isDuration(obj);
檢查是否是一個有效的時間段對象,使用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
總結 :
moment.duration(now())? ? 獲取當前時間
moment.duration(now()).asHours() //獲取當前時間的小時時間段 asMilliseconds()//毫秒 asSeconds()//秒 asMinutes()//分 asHours()//時 asDays()//天 asMonths()//月 asYears()//年
不加 as 的時候,是獲取時間值
附:
一個使用 moment 模塊計算時間差的示例:
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()); // 輸出兩個時間之間間隔的分鐘數(shù)在這個示例中,首先引入了 moment 模塊,并使用 moment() 方法創(chuàng)建了兩個日期對象 start 和 end。其中,start 表示起始日期和時間,使用 moment() 方法可以從標準的日期字符串或 JavaScript Date 對象創(chuàng)建日期對象。end 則表示當前時間,通過直接調(diào)用moment() 創(chuàng)建當前時間的日期對象。
然后,使用 diff() 方法計算 end 和 start 之間的時間差,將結果保存到變量 diff 中。接著,將 diff 傳遞給 duration() 方法,創(chuàng)建一個持續(xù)時間對象,并使用 asMinutes() 方法獲取該持續(xù)時間以分鐘為單位的值。
最后,將兩個時間之間的間隔分鐘數(shù)輸出到控制臺上。
相關文章
Node.js中使用計時器定時執(zhí)行函數(shù)詳解
這篇文章主要介紹了Node.js中使用計時器定時執(zhí)行函數(shù)詳解,本文使用了Node.js中的setTimeout和setInterval函數(shù),需要的朋友可以參考下2014-08-08
Express + Session 實現(xiàn)登錄驗證功能
本文主要介紹在 Express 框架中,如何使用 Session 來實現(xiàn)用戶登錄身份驗證。對express session實現(xiàn)登錄驗證相關知識,感興趣的朋友一起看看吧2017-09-09
詳解使用Typescript開發(fā)node.js項目(簡單的環(huán)境配置)
本篇文章主要介紹了詳解使用Typescript開發(fā)node.js項目(簡單的環(huán)境配置),非常具有實用價值,需要的朋友可以參考下2017-10-10

