封装方法——格式化日期-dayjs库的使用

封装方法——格式化日期-dayjs库的使用

Day.js中文网—— 一个轻量的处理时间和日期的 JavaScript 库

1、安包

“dayjs”: “^1.9.7”,

2.1、简易使用
示例1
 //当月1号
const monthDate = dayjs().date(1).toDate();

const last_month = dayjs().format('YYYY-MM');
state.pageInfo.time = last_month;
示例2
<el-form-item label="期间">
    <el-date-picker
        v-model="formData.salaryDate"
        placeholder="选择日期"
        type="month"
    >
    </el-date-picker>
</el-form-item>

<script>
formData: {
    salaryDate: null,
},
    
onMounted(() => {
    let last_month = dayjs().subtract(1, 'month').format('YYYY-MM');
    state.formData.salaryDate = new Date(last_month);
    network.queryPageData();
});
</script>
示例3
import dayjs from 'dayjs';

let oneDay = 24 * 60 * 60 * 1000;
const disableStartTime = (time) => {
    return time.getTime() < new Date(formatDateMonth(new Date())).getTime() - oneDay;
};
const disableEndTime = (time) => {
    if (state.form.startTime) {
        return time.getTime() > dayjs(state.form.startTime).toDate().getTime();
    }
    return time.getTime() < dayjs().toDate().getTime() - oneDay;
    
};
onMounted(() => {
    funMethods.getStaffInfo();
    funMethods.getallowanceDate();
});
return {
    disableStartTime,
    disableEndTime,
    ...toRefs(state),
    ...funMethods
};
示例4

vue.config.js

const dayjs = require('dayjs');
const dayjs_now = dayjs();
process.env.VUE_APP_FEBUILDTIME = dayjs_now.valueOf();
process.env.VUE_APP_FEBUILDTIMEX = 'EHR build time:' + dayjs_now.format('YYYY-MM-DD HH:mm:ss');

public/index.html

<head>
    <meta content='<%= VUE_APP_FEBUILDTIME %>' name='febuildtime'>
    <meta content='<%= VUE_APP_FEBUILDTIMEX %>' name='febuildtimex'>
</head>
2.2、封装的方法

src/utils/date-formator.ts

import dayjs from 'dayjs';

/**
 * @param defaultTimeArrS 到秒 默认时间  当天的000000到235959
 * @param defaultTimeArrM 到分 默认时间 当天的0000到2359
 */
export const defaultTimeArrS = [
    new Date('2000-01-01 00:00:00'),
    new Date('2000-01-01 23:59:59')
];

export const defaultTime = [
    new Date('2000-01-01 23:59:59')
];
export const defaultTimeArrM = [
    new Date('2000-01-01 00:00'),
    new Date('2000-01-01 23:59')
];

export const defaultTimeM = [
    new Date('2000-01-01 23:59')
];


/**
 * 格式化日期时间
 * @param date
 */
export function formatDateTime(date: Date | string | number): string {
    if (!date) return '';
    return dayjs(date).format('YYYY-MM-DD HH:mm:ss');
}

/**
 * 格式化日期时间
 * @param date
 */
export function formatDateMin(date: Date | string | number): string {
    if (!date) return '';
    return dayjs(date).format('YYYY-MM-DD HH:mm');
}

/**
 * 格式化日期
 * @param date
 */
export function formatDate(date: Date | string | number): string {
    if (!date) return '';
    return dayjs(date).format('YYYY-MM-DD');
}

export function formatMin(date: Date | string | number): string {
    if (!date) return '';
    return dayjs(date).format('HH:mm');
}


/**
 * 格式化日期
 * @param date
 */
export function formatDateMonth(date: Date | string | number): string {
    if (!date) return '';
    return dayjs(date).format('YYYY-MM');
}

/**
 * 格式化时间
 * @param date
 */
export function formatTime(date: Date | string | number): string {
    if (!date) return '';
    return dayjs(date).format('hh:mm:ss');
}

/**
 * 创建默认时间
 * @param date
 */
export function createDate(time: string): Date {
    const arr = time.split(':');
    const date = new Date();
    date.setHours(Number(arr[0]));
    date.setMinutes(Number(arr[1]));
    date.setSeconds(Number(arr[2]));
    return date;
}

/**
 * 获取上、下个月日期 格式 2020-12
 */
export function getNLMonth(time, num) {//
    var date = new Date(time);
    var year = date.getFullYear();
    var month: any = date.getMonth() + num;
    if (month == 0) {
        year = year - 1;
        month = 12;
    }
    if (month > 12) {
        year = year + 1;
        month = 1;
    }
    month = month < 10 ? `0${month}` : month;
    return year + '-' + month;
}

/**
 * 1-31 天 且 保留一位小数
*/
let monthDay = null
export function formatterMounthDay(day) {
    if (day < 31 && day>= 1) {
        monthDay = day
        if (day.includes('.') && day.split('.')[1]) {
            console.log(day.split('.')[1].length);
            if (day.split('.')[1].length <3) {
                monthDay = day.split('.')[0] + "." + day.split('.')[1].toString()
            }else {
                monthDay = day.split('.')[0] + "." + day.split('.')[1][0] +  day.split('.')[1][1]
            }
        }
    } else if (day == 31) {
        monthDay = day
        if (day.includes('.')) {
            monthDay = day.split('.')[0]
        }
    }else if (day == 0 || day == '') {
        monthDay = null
    }
    return monthDay
}
3、页面中使用
<script>
import { formatDateMonth, formatDateTime, formatDate} from '@/utils/date-formator';
    
obj.time = obj.time ?? formatDateMonth(state.time)
    
applyTime: formatDateTime(new Date(date)), 
state.formData.interviewTime = formatDateMin(new Date()),
</script>
4、具体实例
<el-date-picker
    v-model="form.startTime"
    :default-time="defaultTimeArrS"
    :disabled-date="disabledSTDate"
    class="width-294"
    format="YYYY-MM-DD"
    start-placeholder="请选择开始日期"
    range-separator="至"
    end-placeholder="请选择结束日期"
    style="width: 100%"
    type="daterange"
    :clearable="false"
    :editable="false"
></el-date-picker>

<el-form-item label="月实际出勤天数" prop="attendDays" v-if="attendTypeRule ===35">
		<el-input @input="inputattendDays" placeholder="请输入月实际出勤天数" class="width-294" v-model="ruleForm.attendDays">
            <template #append>天</template>
       </el-input>
</el-form-item>

<script>
    import {
        defaultTimeArrS,
        formatDate,
        formatDateTime,
        formatMin,
        formatDateMonth,
        formatterMounthDay
    } from '@/utils/date-formator';

    state.formData.startTime = formatDate(val.txtValue[0]) + ' 00:00:00'
    state.formData.endTime = formatDate(val.txtValue[1]) + ' 23:59:59'

    
 //方法
 // 1-31天 且 保留一位小数
    inputattendDays(day) {
        state.ruleForm.attendDays = formatterMounthDay(day)
    },
    inputMonthDay(day) {
        state.ruleForm.shouldAttendDays = formatterMounthDay(day)
    },
    
    return {
        defaultTimeArrS,
        ...toRefs(state),
        ...funMethods,
    };
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值