最全面的封装时间处理函数(建议收藏)

18 篇文章 0 订阅

公司这次的一个项目,对时间处理,相互转化,弄得我烦不胜烦,因此,都记录下来,方便自己也方便他人。若有什么遗落的,望提醒,我补充!
注:使用框架的朋友,为了代码的整洁与后期维护,使用引入的方式更佳

在开始之前给兄弟们一些备注:

时间戳:1593436890378
中国标准时间: Mon Jun 29 2020 21:21:59 GMT+0800 (中国标准时间)
标准时间: 2020-06-29 00:00:00

时间戳转标准时间

export default {
  // js时间戳转化成日期格式
  timestampToTime(timestamp) {
    const date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
    const Y = date.getFullYear() + '-';
    const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
    const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
    const m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
    const s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
    return Y + M + D + h + m + s;
  }
};

中国标准时间转标准时间

export default {
  // 中国标准时间 转时间格式
  formatDate(time, format) {
    const t = new Date(time);
    const tf = function (i) {
      return (i < 10 ? '0' : '') + i;
    };
    return format.replace(/yyyy|MM|dd|HH|mm|ss/g, (a) => {
      switch (a) {
        case 'yyyy':
          return tf(t.getFullYear());
        case 'MM':
          return tf(t.getMonth() + 1);
        case 'mm':
          return tf(t.getMinutes());
        case 'dd':
          return tf(t.getDate());
        case 'HH':
          return tf(t.getHours());
        case 'ss':
          return tf(t.getSeconds());
        default:
          break;
      }
    });
  }
};
// 使用
formatDate(date, "yyyy-MM-dd HH:mm:ss")

标准时间转中国标准时间

let time = new Date('2020-12-12 00:00:00')  // Sat Dec 12 2020 00:00:00 GMT+0800 (中国标准时间)

时间戳转中国标准时间

时间戳转标准时间 ==> 再转中国标准时间

中国标准时间转时间戳

let a = new Date('Mon Jun 29 2020 21:21:59 GMT+0800 (中国标准时间)').getTime()  // 1593436919000

标准时间转时间戳

let time = new Date('2020-12-12 00:00:00').getTime(); // 12174367811

秒数转化成时间段(多少时间前)

export default {
    // 秒数转化成时间段
    formatSeconds(value) {
        let secondTime = parseInt(value); // 秒
        let minuteTime = 0;// 分
        let hourTime = 0;// 小时
        if (secondTime > 60) {// 如果秒数大于60,将秒数转换成整数
            // 获取分钟,除以60取整数,得到整数分钟
            minuteTime = parseInt(secondTime / 60);
            // 获取秒数,秒数取佘,得到整数秒数
            secondTime = parseInt(secondTime % 60);
            // 如果分钟大于60,将分钟转换成小时
            if (minuteTime > 60) {
                // 获取小时,获取分钟除以60,得到整数小时
                hourTime = parseInt(minuteTime / 60);
                // 获取小时后取佘的分,获取分钟除以60取佘的分
                minuteTime = parseInt(minuteTime % 60);
            }
        }
        var result = "" + parseInt(secondTime) + "秒";

        if (minuteTime > 0) {
            result = "" + parseInt(minuteTime) + "分" + result;
        }
        if (hourTime > 0) {
            result = "" + parseInt(hourTime) + "时" + result;
        }
        return result;
    }
};

封装时间处理函数 (多久之前的时间处理函数)

export default {
	timeMaker(t) {
	  let result;
      const date = new Date(t); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
      csont now = new Date();

      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();
      let NY = now.getFullYear();
      let NM = now.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
      let ND = now.getDate();
      let Nh = now.getHours();
      let Nm = now.getMinutes();
      let Ns = now.getSeconds();

      if(NY-Y>0){
        result = NY-Y+"年前"
      }else if(NM-M>0){
        result = NM-M+"月前"
      }else if(ND-D>0){
        result = ND-D+"天前"
      }else if(Nh-h>0){
        result = Nh-h+"时前"
      }else if(Nm-m>0){
        result = Nm-m+"分前"
      }else if(Ns-s>0){
        result = Ns-s+"秒前"
      }
      return result
    },
}

在这里插入图片描述

点击对应的选择对应的时间段

方法一:例举点击 昨天

getTime() {
	let startTime= new Date().getTime() // 获取当前的时间戳
	// 当天的时间抽减去 24小时 getDate函数是时间戳转为标准时间函数 上面有
	startTime= getDate((today  - 24 * 60 * 60 * 1000) / 1000) 
	// 将标准时间转为为中国标准时间  便于修改 
	// 中国标准时间可以修改时间 标准时间不能修改
	startTime = new Date(startTime)
	// 整合写法
	//const startTime = new Date(getDate((new Date().getTime() - 24 * 60 * 60 * 1000) / 1000)) 
	let endTime = startTime
    this.customMytime(startTime, endTime)
}
customMytime(startTime, endTime){
	  startTime.setHours(0)
      startTime.setMinutes(0)
      startTime.setSeconds(0)
      endTime.setHours(23)
      endTime.setMinutes(59)
      endTime.setSeconds(59)
      console.log(startTime, endTime)
      // 根据框架需要什么格式的时间 进行最后一步的处理 便可以
}

方法二: 引入插件 moment.js

http://momentjs.cn/

import moment from './moment.js';

// 获取今日/昨日/本周/上周时间
export default {
  // 获取今日的开始结束时间
  getToday() {
    const obj = {
      startTime: '',
      endTime: ''
    };
    obj.startTime = moment(moment().startOf('day').valueOf()).format('YYYY-MM-DD HH:mm:ss');
    obj.endTime = moment(moment().valueOf()).format('YYYY-MM-DD HH:mm:ss');
    return obj;
  },
  // 获取昨日的开始结束时间
  getYesterday() {
    const obj = {
      startTime: '',
      endTime: ''
    };
    obj.startTime = moment(moment().add(-1, 'days').startOf('day').valueOf()).format('YYYY-MM-DD HH:mm:ss');
    obj.endTime = moment(moment().add(-1, 'days').endOf('day').valueOf()).format('YYYY-MM-DD HH:mm:ss');
    return obj;
  },
  // 获取当前周的开始结束时间
  getCurrWeekDays() {
    const obj = {
      startTime: '',
      endTime: ''
    };
    obj.startTime = moment(moment().week(moment().week()).startOf('week').add(1, 'days')
      .valueOf()).format(
      'YYYY-MM-DD HH:mm:ss'
    );
    obj.endTime = moment(moment().week(moment().week()).endOf('week').add(1, 'days')
      .valueOf()).format(
      'YYYY-MM-DD HH:mm:ss'
    );
    return obj;
  },
  // 获取上一周的开始结束时间
  getLastWeekDays() {
    const obj = {
      startTime: '',
      endTime: ''
    };
    obj.startTime = moment(moment().week(moment().week() - 1).startOf('week').add(1, 'days')
      .valueOf()).format(
      'YYYY-MM-DD HH:mm:ss'
    );
    obj.endTime = moment(moment().week(moment().week() - 1).endOf('week').add(1, 'days')
      .valueOf()).format(
      'YYYY-MM-DD HH:mm:ss'
    );
    return obj;
  }
};
//使用
let time = getToday() // 获取今天的方法
const { startTime, endTime } = time;
console.log(startTime, endTime)

最近公司业务繁忙,加个班,写个记录,有错误的,希望大佬不吝赐教,有您帮助的,不要吝啬赞赞哈~~哈哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值