常用日期时间处理方法总结

1. 任意格式日期处理,过滤

/**
 * @description 任意格式日期处理,过滤
 * @param
 * @returns string
 */
//任意格式日期处理
//使用格式:
// {{ '2018-09-14 01:05' | formaDate(yyyy-MM-dd hh:mm:ss) }}
// {{ '2018-09-14 01:05' | formaDate('yyyy-MM-dd') }}
// {{ '2018-09-14 01:05' | formaDate(MM/dd) }} 等
export function formaDate(value, fmt) {
    if (!value) {
        return ''
    } else {
        var date = new Date(value)
        var o = {
            'M+': date.getMonth() + 1, //月份
            'd+': date.getDate(), //日
            'h+': date.getHours(), //小时
            'm+': date.getMinutes(), //分
            's+': date.getSeconds(), //秒
            'w+': date.getDay(), //星期
            'q+': Math.floor((date.getMonth() + 3) / 3), //季度
            S: date.getMilliseconds(), //毫秒
        }
        if (/(y+)/.test(fmt))
            fmt = fmt.replace(
                RegExp.$1,
                (date.getFullYear() + '').substr(4 - RegExp.$1.length)
            )
        for (var k in o) {
            if (k === 'w+') {
                if (o[k] === 0) {
                    fmt = fmt.replace('w', '周日')
                } else if (o[k] === 1) {
                    fmt = fmt.replace('w', '周一')
                } else if (o[k] === 2) {
                    fmt = fmt.replace('w', '周二')
                } else if (o[k] === 3) {
                    fmt = fmt.replace('w', '周三')
                } else if (o[k] === 4) {
                    fmt = fmt.replace('w', '周四')
                } else if (o[k] === 5) {
                    fmt = fmt.replace('w', '周五')
                } else if (o[k] === 6) {
                    fmt = fmt.replace('w', '周六')
                }
            } else if (new RegExp('(' + k + ')').test(fmt)) {
                fmt = fmt.replace(
                    RegExp.$1,
                    RegExp.$1.length == 1 ?
                    o[k] :
                    ('00' + o[k]).substr(('' + o[k]).length)
                )
            }
        }
        return fmt
    }
}

2.获取当前系统时间

 
/**
 * @description 获取当前系统时间
 * @param
 * @returns String
 */

export function getNowTime() {
    let dateTime
    let date = new Date()

    let year = date.getFullYear()
    let month = date.getMonth() + 1
    let day = date.getDate()
    let hour = date.getHours()
    let minute = date.getMinutes()
    let second = date.getSeconds()

    dateTime = [year, month, day].map(formatNumber).join('-') +
        'T' + [hour, minute, second].map(formatNumber).join(':')
    console.log(dateTime)
    return dateTime
}

function formatNumber(n) {
    n = n.toString()
    return n[1] ? n : '0' + n
} 

3.获取当前系统时间+星期几

/**
 * @description 获取当前系统时间+星期几
 * @param
 * @returns String
 */

export function getNowDateWeek() {
    let dateTime
    let wk = new Date().getDay()
    let yy = new Date().getFullYear()
    let mm = new Date().getMonth() + 1
    let dd = new Date().getDate()
    let weeks = [
        '星期日',
        '星期一',
        '星期二',
        '星期三',
        '星期四',
        '星期五',
        '星期六',
    ]
    let week = weeks[wk]
    let date_show = yy + '年' + mm + '月' + dd + '日'
    dateTime = date_show + ' ' + week
    console.log(dateTime) //2021年9月18日 星期六
    return dateTime
}

4.计算两个日期相差的天数 


import { formaDate } from '@/utils/filter'


/**
 * @description 计算两个日期相差的天数
 * @param
 * @returns Number
 */
// 计算续住的总日期列表
export function getDaysDiff(begin, end) {
    let startTime = formaDate(begin, 'yyyy-MM-dd')
    let endTime = formaDate(end, 'yyyy-MM-dd')
        // console.log(startTime, '-------', endTime)
    let arr1 = startTime.split('-') //这里可以换成/  就2020/01/1 这种
    let arr2 = endTime.split('-')
    let arr1_ = new Date()
    let arrTime = []
    arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2])
    let arr2_ = new Date()
    arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2])
    let unixDb = arr1_.getTime()
    let unixDe = arr2_.getTime()
    for (let k = unixDb; k <= unixDe;) {
        arrTime.push(datetimeparse(k, 'YY-MM-DD'))
        k = k + 24 * 60 * 60 * 1000
    }
    return arrTime
}
// 时间格式处理
function datetimeparse(timestamp, format, prefix) {
    if (typeof timestamp == 'string') {
        timestamp = Number(timestamp)
    }
    //转换时区
    let currentZoneTime = new Date(timestamp)
    let currentTimestamp = currentZoneTime.getTime()
    let offsetZone = currentZoneTime.getTimezoneOffset() / 60 //如果offsetZone>0是西区,西区晚
    let offset = null
        //客户端时间与服务器时间保持一致,固定北京时间东八区。
    offset = offsetZone + 8
    currentTimestamp = currentTimestamp + offset * 3600 * 1000

    let newtimestamp = null
    if (currentTimestamp) {
        if (currentTimestamp.toString().length === 13) {
            newtimestamp = currentTimestamp.toString()
        } else if (currentTimestamp.toString().length === 10) {
            newtimestamp = currentTimestamp + '000'
        } else {
            newtimestamp = null
        }
    } else {
        newtimestamp = null
    }
    let dateobj = newtimestamp ? new Date(parseInt(newtimestamp)) : new Date()
    let YYYY = dateobj.getFullYear()
    let MM =
        dateobj.getMonth() > 8 ?
        dateobj.getMonth() + 1 :
        '0' + (dateobj.getMonth() + 1)
    let DD = dateobj.getDate() > 9 ? dateobj.getDate() : '0' + dateobj.getDate()
    let HH =
        dateobj.getHours() > 9 ? dateobj.getHours() : '0' + dateobj.getHours()
    let mm =
        dateobj.getMinutes() > 9 ? dateobj.getMinutes() : '0' + dateobj.getMinutes()
    let ss =
        dateobj.getSeconds() > 9 ? dateobj.getSeconds() : '0' + dateobj.getSeconds()
    let output = ''
    let separator = '/'
    if (format) {
        separator = format.match(/-/) ? '-' : '/'
        output += format.match(/yy/i) ? YYYY : ''
        output += format.match(/MM/) ? (output.length ? separator : '') + MM : ''
        output += format.match(/dd/i) ? (output.length ? separator : '') + DD : ''
        output += format.match(/hh/i) ? (output.length ? ' ' : '') + HH : ''
        output += format.match(/mm/) ? (output.length ? ':' : '') + mm : ''
        output += format.match(/ss/i) ? (output.length ? ':' : '') + ss : ''
    } else {
        output += YYYY + separator + MM + separator + DD
    }
    output = prefix ? prefix + output : output

    return newtimestamp ? output : ''
}

5.比较两个日期时间大小 

export function verifyDateTime(startTime, endTime) {
    let num
    let _PlanEndTime = new Date(endTime)
    let _PlanStartTime = new Date(startTime)
    num = _PlanEndTime.getTime() - _PlanStartTime.getTime()
        // console.log(_PlanEndTime.getTime() - _PlanStartTime.getTime())
    return num
        // if (_PlanEndTime.getTime() < _PlanStartTime.getTime()) {
        //   return false
        // }
}

 使用:

 queryData() {
    
        let startTime = this.queryForm.date1
        let endTime = this.queryForm.date2
        if (verifyDateTime(startTime, endTime) < 0) {
          return this.$baseMessage(
            `开始时间不能大于结束时间`,
            'error',
            false,
            'vab-hey-message-error'
          )
        }
        
      },

6:检查日期是否为工作日 

// `date` is a Date object
const isWeekday = (date = new Date()) => date.getDay() % 6 !== 0;

7:检查日期是否是周末

// `date` is a Date object
const isWeekend = (date = new Date()) => date.getDay() % 6 === 0;

8:检查日期是否在两个日期之间

// `min`, `max` and `date` are `Date` instances
const isBetween = (date, min, max) => date.getTime() >= min.getTime() && date.getTime() <= max.getTime();

9:检查日期是否是今天

// `date` is a Date object
const isToday = (date) => date.toISOString().slice(0, 10) === new Date().toISOString().slice(0, 10);

10:检查日期是否出现在当年 

// `date` is a Date object
const isCurrentYear = (date) => date.getUTCFullYear() === new Date().getUTCFullYear();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值