JS日期轉(zhuǎn)化指定格式及獲取月/周日期區(qū)間的方法
更新時間:2024年09月18日 15:10:09 作者:洛千隕
本文詳細介紹了JavaScript中Date類型的處理方法,包括日期的格式轉(zhuǎn)換和獲取特定月份或周的日期區(qū)間,本文介紹JS日期轉(zhuǎn)化指定格式及獲取月/周日期區(qū)間的方法,感興趣的朋友跟隨小編一起看看吧
JS日期轉(zhuǎn)化指定格式,獲取月/周日期區(qū)間
該篇文章主要用于收錄JS對Date類型的處理,包括但不限于轉(zhuǎn)化指定格式、獲取各種月/周的日期區(qū)間等等
獲取一年中第一個星期一
function getFirstMondayOfYear(year) { let date = new Date(year, 0, 1) // 1月1日 while (date.getDay() !== 1) { // 找到第一個星期一 date.setDate(date.getDate() + 1) } return date }
獲取一年中最后一個星期一
function getLastMondayOfYear(year) { let date = new Date(year, 11, 31) // 12月31日 while (date.getDay() !== 1) { // 找到第一個星期一 date.setDate(date.getDate() - 1) } return date }
獲取當天所在周的周一與周日對應的日期區(qū)間
function getCurrentWeekRange(today) { let dayOfWeek = today.getDay() let startOfWeek = new Date(today) startOfWeek.setDate(today.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1)) let endOfWeek = new Date(today) endOfWeek.setDate(startOfWeek.getDate() + 6) return [startOfWeek, endOfWeek] }
獲取當天所在月的月初與月末對應的日期區(qū)間
function getCurrentMonthRange(today) { let firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1) let lastDayOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0) return [firstDayOfMonth, lastDayOfMonth] }
獲取一年中的周數(shù)
function getWeeksInYear(year) { let firstMonday = getFirstMondayOfYear(year) let lastMonday = getLastMondayOfYear(year) let weeks = Math.floor((lastMonday - firstMonday) / 86400000 / 7) + 1 // 計算周數(shù) return weeks }
獲取某年某周的日期區(qū)間
function getWeekRange(year, weekNumber) { let firstMonday = getFirstMondayOfYear(year) let start = new Date(firstMonday) start.setDate(start.getDate() + 7 * (weekNumber - 1)) let end = new Date(start) end.setDate(end.getDate() + 6) return [start, end] }
轉(zhuǎn)換日期類型為指定格式
/** * @Description: 轉(zhuǎn)換日期類型為指定格式 * @param date: String | Date, 日期(String需支持轉(zhuǎn)換Date) * @param format: String, 格式示例(以一年中的一月一日作為示例) * @return String(目前支持年月日/年月/月日) **/ function getFormatDate(date, format) { const currentDate = new Date(date) let formatDate = '' let isYear = true // 示例是否包含年份 let formatArray = [] // 拆解示例文本中的各部分 let part = '' for(let i of format) { if(!isNaN(i)) part += i else { formatArray.push(part) formatArray.push(i) part = '' } } if(part) formatArray.push(part) formatArray.forEach((item, index) => { let partText = '' // 第一個數(shù)字可能為年份或者月份 if(index === 0) { if(item.length > 2) partText = currentDate.getFullYear() if(item.length === 2) { partText = (currentDate.getMonth() + 1).toString().padStart(2, '0') isYear = false } if(item.length < 2) { partText = currentDate.getMonth() + 1 isYear = false } } // 第二個數(shù)字可能為月份或天數(shù) else if(index === 2) { if(item.length === 2 && isYear) partText = (currentDate.getMonth() + 1).toString().padStart(2, '0') if(item.length < 2 && isYear) partText = currentDate.getMonth() + 1 if(item.length === 2 && !isYear) partText = currentDate.getDate().toString().padStart(2, '0') if(item.length < 2 && !isYear) partText = currentDate.getDate() } // 第三個數(shù)字為天數(shù) else if(index === 4) { if(item.length === 2) partText = currentDate.getDate().toString().padStart(2, '0') if(item.length < 2) partText = currentDate.getDate() } else partText = item formatDate += partText }) return formatDate }
獲取某一年中每一周的日期區(qū)間的數(shù)組集合
/** * @Description: 獲取某一年中每一周的日期區(qū)間的數(shù)組集合 * @param year: number, 年份 * @return Array **/ function getWeeks(year) { let weeksInYear = getWeeksInYear(year) // 計算一年中的周數(shù) let data = [] while(weeksInYear !== 0) { let weekRange = getWeekRange(year, weeksInYear) let start = getFormatDate(weekRange.start, '01-01') let end = getFormatDate(weekRange.end, '01-01') let string = start + '~' + end + '(第' + weeksInYear + '周)' weeksInYear-- data.unshift(string) } return data }
判斷日期是否為未來的日期
function isFutureDate(date) { let today = new Date() let nowTime = today.getTime() let dateTime = date.getTime() return dateTime > nowTime }
到此這篇關(guān)于JS日期轉(zhuǎn)化指定格式,獲取月/周日期區(qū)間的文章就介紹到這了,更多相關(guān)JS日期轉(zhuǎn)化指定格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS 組件系列之Bootstrap Table 凍結(jié)列功能IE瀏覽器兼容性問題解決方案
這篇文章主要介紹了JS 組件系列之Bootstrap Table 凍結(jié)列功能IE瀏覽器兼容性問題解決方案,需要的朋友可以參考下2017-06-06JavaScript實現(xiàn)網(wǎng)頁版簡易計算器功能
這篇文章主要介紹了JavaScript實現(xiàn)網(wǎng)頁版簡易計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07詳解微信小程序?qū)崿F(xiàn)仿微信聊天界面(各種細節(jié)處理)
這篇文章主要介紹了詳解微信小程序?qū)崿F(xiàn)仿微信聊天界面(各種細節(jié)處理),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-02-02