获取时间前一天,前两天。。。格式化时间函数,时间戳转换日期函数。获取前一个月的日期。

第一部分:获取时间前一天,前两天

// 获取时间 var yesterday = getDay(-1, '-');		//    -1 代表前一天,-2前两天...
export function getDay(num, str) {
    let today = new Date();
    let nowTime = today.getTime();
    let ms = 24 * 3600 * 1000 * num;
    today.setTime(parseInt(nowTime + ms));
    let oYear = today.getFullYear();
    let oMoth = (today.getMonth() + 1).toString();
    if (oMoth.length <= 1) oMoth = '0' + oMoth;
    let oDay = today.getDate().toString();
    if (oDay.length <= 1) oDay = '0' + oDay;
    return oYear + str + oMoth + str + oDay;
}

第二部分:格式化时间函数

// 用于格式化时间
// 设置按需导出
export function formatDate(value, format) {
   //value: 需要格式化的数据
   //format: 指定格式 yyyy-MM-dd hh:mm:ss
   let date = new Date(value);
   // 获取年份
   let year = date.getFullYear();
   if (/(y+)/.test(format)) {
       // 获取匹配组的内容
       let content = RegExp.$1;
       format = format.replace(
           content,
           year.toString().slice(4 - content.length)
       );
   }

   let o = {
       // y: date.getFullYear(),  // 用这一句也行,但只适用于四位数显示时候用
       M: date.getMonth() + 1,
       d: date.getDate(),
       h: date.getHours(),
       m: date.getMinutes(),
       s: date.getSeconds()
   };

   for (let key in o) {
       // 构造动态正则
       let reg = new RegExp(`(${key}+)`);

       if (reg.test(format)) {
           // 获取匹配组的内容
           let content = RegExp.$1;
           let k =
               o[key] >= 10
                   ? o[key]
                   : content.length == 2
                   ? '0' + o[key]
                   : o[key];
           format = format.replace(content, k);
       }
   }
   return format;
}

第三部分:时间戳转换日期函数

//时间戳转换日期
export function timestampToTime(timestamp) {
    let date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000

    let Y = date.getFullYear() + '-';

    let M =
        (date.getMonth() + 1 < 10
            ? '0' + (date.getMonth() + 1)
            : date.getMonth() + 1) + '-';

    let D = date.getDate() + ' ';

    let h = date.getHours() + ':';

    let m = date.getMinutes() + ':';

    let s = date.getSeconds();

    return Y + M + D + h + m + s;
}

第四部分:获取前一个月的日期

//获取前一个月的日期
//入参格式:YYYY-MM-DD
export function getPreMonthDay(date) {
    let arr = date.split('-');
    let year = arr[0]; //当前年
    let month = arr[1]; //当前月
    let day = arr[2]; //当前日
    //验证日期格式为YYYY-MM-DD
    let reg = date.match(/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/);
    if (!reg || month > 12 || day > 31) {
        console.log('日期或格式有误!请输入正确的日期格式(年-月-日)');
        return;
    }

    let pre_year = year; //前一个月的年
    let pre_month = parseInt(month) - 1; //前一个月的月,以下几行是上月数值特殊处理
    if (pre_month === 0) {
        pre_year = parseInt(pre_year) - 1;
        pre_month = 12;
    }
    let pre_day = parseInt(day); //前一个月的日,以下几行是特殊处理前一个月总天数
    let pre_month_alldays = new Date(pre_year, pre_month, 0).getDate(); //巧妙处理,返回某个月的总天数
    if (pre_day > pre_month_alldays) {
        pre_day = pre_month_alldays;
    }
    if (pre_month < 10) {
        //补0
        pre_month = '0' + pre_month;
    }
    if (pre_day < 10) {
        //补0
        pre_day = '0' + pre_day;
    }

    let pre_month_day = pre_year + '-' + pre_month + '-' + pre_day;
    return pre_month_day;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个好好的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值