JS日期轉(zhuǎn)化指定格式及獲取月/周日期區(qū)間的方法
JS日期轉(zhuǎn)化指定格式,獲取月/周日期區(qū)間
該篇文章主要用于收錄JS對(duì)Date類型的處理,包括但不限于轉(zhuǎn)化指定格式、獲取各種月/周的日期區(qū)間等等
獲取一年中第一個(gè)星期一
function getFirstMondayOfYear(year) {
let date = new Date(year, 0, 1) // 1月1日
while (date.getDay() !== 1) { // 找到第一個(gè)星期一
date.setDate(date.getDate() + 1)
}
return date
}獲取一年中最后一個(gè)星期一
function getLastMondayOfYear(year) {
let date = new Date(year, 11, 31) // 12月31日
while (date.getDay() !== 1) { // 找到第一個(gè)星期一
date.setDate(date.getDate() - 1)
}
return date
}獲取當(dāng)天所在周的周一與周日對(duì)應(yīng)的日期區(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]
}獲取當(dāng)天所在月的月初與月末對(duì)應(yīng)的日期區(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 // 計(jì)算周數(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 = ''
// 第一個(gè)數(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
}
}
// 第二個(gè)數(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()
}
// 第三個(gè)數(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) // 計(jì)算一年中的周數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于JS中match() 和 exec() 返回值和屬性的測(cè)試
這篇文章主要介紹了關(guān)于JS中match() 和 exec() 返回值和屬性的測(cè)試 的相關(guān)資料,需要的朋友可以參考下2016-03-03
JavaScript中防止微信瀏覽器被整體拖動(dòng)的方法
這篇文章主要介紹了JavaScript中防止微信瀏覽器被整體拖動(dòng)的方法,需要的朋友可以參考下2017-08-08
javascript實(shí)現(xiàn)保留兩位小數(shù)的多種方法
這篇文章主要介紹了javascript實(shí)現(xiàn)保留兩位小數(shù)的多種方法,如果數(shù)字的原本小數(shù)位數(shù)不到兩位,那么缺少的就自動(dòng)補(bǔ)零,感興趣的小伙伴們可以參考一下2015-12-12
webpack圖片轉(zhuǎn)為base64的實(shí)現(xiàn)示例
在開發(fā)過程中,圖片轉(zhuǎn)成base64是常有的事,本文主要介紹了webpack圖片轉(zhuǎn)為base64的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
JS實(shí)現(xiàn)對(duì)中文字符串進(jìn)行utf-8的Base64編碼的方法(使其與Java編碼相同)
這篇文章主要介紹了JS實(shí)現(xiàn)對(duì)中文字符串進(jìn)行utf-8的Base64編碼的方法,對(duì)比java的base64編碼程序,分析了javascript實(shí)現(xiàn)base64編碼的相關(guān)技巧,需要的朋友可以參考下2016-06-06
Javascript基于OOP實(shí)實(shí)現(xiàn)探測(cè)器功能代碼實(shí)例
這篇文章主要介紹了Javascript基于OOP實(shí)實(shí)現(xiàn)探測(cè)器功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
javascript正則表達(dá)式使用replace()替換手機(jī)號(hào)的方法
這篇文章主要介紹了javascript正則表達(dá)式使用replace()替換手機(jī)號(hào)的方法,可實(shí)現(xiàn)把手機(jī)號(hào)第4位到第7位替換成****的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2015-01-01

