// 定义补零
function zeroFill(n) {
return n < 10 ? "0" + n : n
}
// 时间格式化(处理后端传过来的格式时间)// 2023-10-24T09:05:26.000+08:00
export const handleDateFormat = (date) => {
if (date) {
let time = new Date(date)
let Year = time.getFullYear() // 年
let Month = zeroFill(time.getMonth() + 1) //月
let Day = zeroFill(time.getDate()) // 日
// let Week = time.getDay() // 周
let hour = zeroFill(time.getHours()) // 时
let minute = zeroFill(time.getMinutes()) // 分
let second = zeroFill(time.getSeconds()) // 秒
return Year + "-" + Month + "-" + Day + " " + hour + ":" + minute + ":" + second
} else {
return ''
}
}
// 获取本地时间
export const useTime = () => {
let year = 0 // 年份
let month = 0 // 月份
let week = '' // 星期几
let day = 0 // 天数
let hour = 0 // 小时
let minute = 0 // 分钟
let second = 0 // 秒
let nowTime = '' // 当前时间
// 更新时间
const updateTime = () => {
const date = new Date()
year = date.getFullYear()
month = date.getMonth() + 1
month >= 1 && month <= 9 ? (month = '0' + month) : ''
week = '日一二三四五六'.charAt(date.getDay())
day = date.getDate()
day >= 0 && day <= 9 ? (day = '0' + day) : ''
hour =
(date.getHours() + '')?.padStart(2, '0') ||
new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(
date.getHours()
)
minute =
(date.getMinutes() + '')?.padStart(2, '0') ||
new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(
date.getMinutes()
)
second =
(date.getSeconds() + '')?.padStart(2, '0') ||
new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(
date.getSeconds()
)
nowTime = `${year}年${month}月${day} ${hour}:${minute}:${second}`
}
updateTime()
return { year, month, day, hour, minute, second, week, nowTime }
}
// 获取当前时间
export const getCurrentDate = () => {
let date = new Date()
let year = date.getFullYear()
let month = date.getMonth() + 1
let day = date.getDate()
let hour = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
let minute =
date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
let second =
date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
month >= 1 && month <= 9 ? (month = '0' + month) : ''
day >= 0 && day <= 9 ? (day = '0' + day) : ''
return (
year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second
)
}
// 获取当前月份的第一天 new Date('2023/10/10') // 用-的话ios兼容有问题 需要/
export function getStartTime(params) {
let str = params
if(params.indexOf('-') > 0){
str = params.replace(/-/g,"/")
}
let date = new Date(str)
date.setDate(1) // 将当前时间的日期设置成第一天
let year = date.getFullYear() // 得到当前年份
let month = date.getMonth() + 1 // 得到当前月份(0-11月份,+1是当前月份)
month = month >= 10 ? month : '0' + month // 补零
let day = date.getDate() // 得到当前天数,实际是本月第一天,因为前面setDate(1) 设置过了
// console.log(month) 03
return year + '-' + month + '-' + day
};
// 获取当前月份的最后一天
export function getEndTime(params) {
let str = params
if(params.indexOf('-') > 0){
str = params.replace(/-/g,"/")
}
let date = new Date(str)
let year = date.getFullYear()
let month = date.getMonth() + 1
month = month >= 10 ? month : '0' + month // 补零
// 这里传入的是整数时间,返回的是下个月的第一天,因为月份是0-11
let nextMonthFirthDay = new Date(year, month, 1) // 下个月的第一天
// console.log(nextMonthFirthDay)
let oneDay = 1000 * 60 * 60 * 24 // 一天的时间毫秒数
let endDay = new Date(nextMonthFirthDay - oneDay)
let day = endDay.getDate() // 本月最后一天
// 这里传入的是字符串格式的时间,返回的是传入字符串的时间
return year + '-' + month + '-' + day
}
// 获取年份
export const getYearArr = () => {
let date = new Date()
let year = date.getFullYear()
let arr = []
for (var i = 0; i < 8; i++) {
let val = year - i + '年'
arr.push({
label: val,
value: year - i,
})
}
return arr
}
// 获取月份
export const getMonthArr = () => {
let arr = []
for (var i = 0; i < 12; i++) {
let val = i + 1 + '月'
arr.push({
label: val,
value: i + 1,
})
}
return arr
}
// 获取日期
export const getDayArr = (y,m) => {
let year = y ? y : new Date().getFullYear()
let month = m ? m : (new Date().getMonth() + 1)
let date = new Date(year,month,0)
let day = date.getDate() // 本月最后一天
let arr = []
for (var i = 0; i < day; i++) {
let val = (i + 1) + '日'
arr.push({
label: val,
value: i + 1
})
}
arr.unshift({
label: "全部",
value: 0
})
return arr
}
// 获取一年周数
export const getWeekArr = (params) => {
let year = params ? params : new Date().getFullYear()
let start = new Date(year, 0, 1)
let end = new Date(year, 12, 1)
let oneDay = 1000 * 60 * 60 * 24 // 一天的时间毫秒数
let endDay = new Date(end - oneDay)
let days = Math.floor((endDay.getTime() - start.getTime()) / oneDay) // 2023 364天
let weekDay = Math.ceil(days / 7)
// console.log(weekDay) // 2023 52周
let arr = []
for (var i = 0; i < weekDay; i++) {
let val = '第' + (i + 1) + '周'
arr.push({
label: val,
value: i + 1,
})
}
return arr
}
// 获取年今天周数
export const getWeekDays = () => {
let year = new Date().getFullYear()
let start = new Date(year, 0, 1)
let oneDay = 1000 * 60 * 60 * 24 // 一天的时间毫秒数
let days = Math.floor((new Date().getTime() - start.getTime()) / oneDay)
let weekDay = Math.ceil(days / 7)
// console.log(weekDay) // 2023-11-8 45周
return weekDay
}
// 获取选择月周数
export const getMonthWeekArr = (year, month) => {
let start = new Date(year, month - 1, 1)
let nextMonthFirthDay = new Date(year, month, 1)
let oneDay = 1000 * 60 * 60 * 24 // 一天的时间毫秒数
let endDay = new Date(nextMonthFirthDay - oneDay) // 本月最后一天
let days = Math.floor((endDay.getTime() - start.getTime()) / oneDay)
let weekDay = Math.ceil(days / 7)
let arr = []
for (var i = 0; i < weekDay; i++) {
let val = '第' + (i + 1) + '周'
arr.push({
label: val,
value: i + 1,
})
}
return arr
}
// 获取当天选择月周数
export const getMonthWeekDays = () => {
let year = new Date().getFullYear()
let month = new Date().getMonth()
let start = new Date(year, month, 1)
let oneDay = 1000 * 60 * 60 * 24 // 一天的时间毫秒数
let days = Math.floor((new Date().getTime() - start.getTime()) / oneDay)
let weekDay = Math.ceil(days / 7)
// console.log(weekDay) // 2023-11-8 45周
return weekDay
}
// 获取选择月周数的时间范围
export const getMonthWeekDate = (year, month, week) => {
let start = new Date(year, month - 1, 1)
let oneDay = 1000 * 60 * 60 * 24 // 一天的时间毫秒数
// 一周7天[查到月份区间]
let searchDay = start.getTime() + oneDay * 7 * (week - 1)
let weekDay = new Date(searchDay).getDay()
// 获取周一日期
let first = searchDay - (weekDay - 1) * oneDay
let firstDay = dateformat(new Date(first))
let lastDay = dateformat(new Date(first + oneDay * 6))
return [firstDay, lastDay]
}
function dateformat(date) {
return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate()
}
日期方法封装
于 2023-11-10 11:51:05 首次发布