moment.js 計算當(dāng)前一周、一月對應(yīng)日期的實例
moment.js 計算當(dāng)前一周、一月對應(yīng)日期
計算當(dāng)前一周對應(yīng)日期
/** ? ?* 根據(jù)一個日期計算出其所在的一周,反正對應(yīng)一周的相應(yīng)日期 ? ?* basisDate: 依據(jù)日期, 默認(rèn)是當(dāng)天 ? ?*/ ? calcWeekDate(basisDate = moment().format('YYYY-MM-DD')) { ? ? let weekDate = []; ? ? let howWeek = moment(basisDate).day(); ? // 獲取到依據(jù)日期為星期幾;0為星期日、6為星期6 ? ? // 如果今天是周日,則單獨處理,往前計算6天 ? ? if (howWeek === 0) { ? ? ? let mixins = 0; ? ? ? while (mixins <= 6) { ? ? ? // 一次減1;即一次減6天,5天... => 獲取到了這周的周一、周二、到今天 ? ? ? ? weekDate.unshift(moment(basisDate).subtract(mixins, 'days').format('YYYY-MM-DD')); ? ? ? ? mixins++; ? ? ? } ? ? ? return weekDate; ? ? } ? ? let minusNum = 1, addNum = 1; ? ? // 用今天的日期對應(yīng)的星期數(shù)去往前遍歷 ? ? while (minusNum <= howWeek) { ? ? ? // 一次減1;即一次減6天,5天... => 獲取到了這周的周一、周二、到今天 ? ? ? weekDate.push(moment(basisDate).subtract(howWeek - minusNum, 'days').format('YYYY-MM-DD')); ? ? ? minusNum++; ? ? } ? ? // 7 - howWeek 即今天后面要加的天數(shù)(一周是7天) ? ? while(addNum <= (7 - howWeek)) { ? ? ? weekDate.push(moment(basisDate).add(addNum, 'days').format('YYYY-MM-DD')); ? ? ? addNum++; ? ? } ? ? return weekDate; ? }
計算當(dāng)前一月對應(yīng)日期
/** ? ?* 根據(jù)一個日期計算出其所在的一月,反正對應(yīng)一月的相應(yīng)日期 ? ?* basisDate: 依據(jù)日期, 默認(rèn)是當(dāng)天 ? ?* replenishWeek: 是否需要將該月第一天和最后一天所在的周補全(通日歷類似),默認(rèn)需要 ? ?*/ ? calcMonthDate(basisDate = moment().format('YYYY-MM-DD'), replenishWeek = true) { ? ? let monthDate = []; ? ? const monthStart = moment(basisDate).startOf('month').format("YYYY-MM-DD"); ? ? ?// 該月第一天 ? ? const monthEnd = moment(basisDate).endOf('month').format("YYYY-MM-DD"); ? ? ? ? ?// 該月最后一天 ? ? monthDate.push(monthStart); ? // 先將當(dāng)月第一天放到數(shù)組中 ? ? let addNum = 1; ? ? while (monthDate[monthDate.length - 1] < monthEnd) { ? ? ? // 依次用當(dāng)月第一天加,直到該月的最后一天 ? ? ? monthDate.push(moment(monthStart).add(addNum, 'days').format('YYYY-MM-DD')); ? ? ? addNum++; ? ? } ? ? if (replenishWeek) { ? ?// 根據(jù)參數(shù),補全該月第一天和最后一天所在的周 ? ? ? // 調(diào)用方法,得出該月第一天和最后一天分別是周幾 => 星期日為 0、星期六為 6? ? ? ? const monthStartWeek = moment(monthDate[0]).day(); ? ? ? const monthEndWeek = moment(monthDate[monthDate.length - 1]).day(); ? ? ? let addEmpty = 1, minusNum = 1; ? ? ? /** 注意:我們默認(rèn)的日歷顯示是 周一 => 周日 */ ? ? ? let unshiftEnd = monthStartWeek; ?// 默認(rèn),當(dāng)月第一天是周幾,就往前加n-1天(如周五:往前加5-1天; 周日:往前加7-1天) ? ? ? if (monthStartWeek === 0) { ? ? ? ? unshiftEnd = 7 ? ? ? } ? ? ? while (minusNum < unshiftEnd) { // 如果是周一,則一天也不會加 ? ? ? ? // 一次減1;即分別在第一天的基礎(chǔ)上減一天、兩天、三天....;然后放到數(shù)組的前面 ? ? ? ? monthDate.unshift(moment(monthStart).subtract(minusNum, 'days').format('YYYY-MM-DD')); ? ? ? ? minusNum++; ? ? ? } ? ? ?? ? ? ? if (monthEndWeek !== 0) { ? // 如果最后一天是周日,則不補齊剩余日期 ? ? ? ? // 7 - monthEndWeek 即這個月最后一天后面要加的天數(shù)(一周是7天) =>> 往后把一周補全(最后以周六結(jié)束,周日在最前面) ? ? ? ? // while(addEmpty < (7 - monthEndWeek + 1)) { ? // 7 - monthEndWeek + 1 : 周天在最后;7 - monthEndWeek:周天在最前 ? ? ? ? while(addEmpty <= 7 - monthEndWeek) { ? //<= : 周天在最后;<:周天在最前 ? ? ? ? ? monthDate.push(moment(monthEnd).add(addEmpty, 'days').format('YYYY-MM-DD')); ? ? ? ? ? addEmpty++; ? ? ? ? } ? ? ? } ? ? } ? ? return monthDate; ? } }
用moment.js來解決時間問題
場景
今天用js獲取昨天日期和今天的日期遇到一個問題,如圖
我把當(dāng)前日期減-1想要獲取昨天的日期就出現(xiàn)了202-07-0這個笑話
解決辦法
直接使用JavaScript
日期處理類庫----moment.js
使用步驟
安裝:
npm install moment --save
安裝完畢后,將會在node_modules
中下載moment
庫。
編輯main.js
,配置moment
:
import moment from 'moment' Vue.prototype.moment = moment
獲取前一天的日期
var yesterDay = this.moment().subtract(1, "day").format("YYYY-MM-DD");
獲取前一個月的日期
var lastMonth = this.moment().subtract(1, 'month').format('YYYY-MM-DD')
獲取前一個年的日期
var lastYear = this.moment().subtract(1, 'month').format('YYYY-MM-DD')
如果你想獲取前幾天或者前幾個月甚至前幾年的日期,你只需要把數(shù)字‘1’改變就行
該方法是已當(dāng)前時間為主,如果你要按照不同的時間來獲取,在’moment()'中加入對應(yīng)格式的日期字符串比如’moment(‘2022-3-21’).subtract(2, ‘day’).format(‘YYYY-MM-DD’))'
更多:
let day = moment() // 當(dāng)前時間 let day = moment('2022-01-11') let day = moment('11/01/2022', 'MM/DD/YYYY') let day = moment(毫秒時間戳) let day = moment.unix(秒時間戳)
頁面顯示
let day = moment() // 當(dāng)前時間 day.format('YYYY年MM-DD HH:mm:ss') // 2022年03-14 17:05:32
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript 中iframe高度自適應(yīng)(同域)實例詳解
這篇文章主要介紹了javascript 中iframe高度自適應(yīng)(同域)實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05獲取焦點時,利用js定時器設(shè)定時間執(zhí)行動作
網(wǎng)上有很多類似的知識,并不是有什么難度的技巧,僅僅是開發(fā)過程中的一點點積累而已。2010-04-04微信小程序scroll-view錨點鏈接滾動跳轉(zhuǎn)功能
這篇文章主要介紹了微信小程序scroll-view錨點鏈接滾動跳轉(zhuǎn)功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-1224行JavaScript代碼實現(xiàn)Redux的方法實例
這篇文章主要給大家介紹了關(guān)于如何利用24行JavaScript代碼實現(xiàn)Redux的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11