js处理各种时间格式

1.格式化时间

支持2种分割符的时间 eg: YYYY-MM-DD hh:mm:ss YYYY/MM/DD hh:mm:ss,或者毫秒数

export const formateDate = (date, formater) => {
  if (typeof (date) !== 'number' && typeof (date) !== 'object' || !date) {
    return "-- : --";
  }
  var nowDate = new Date(date);
  var year = nowDate.getFullYear();
  var month = nowDate.getMonth() + 1;
  month = month < 10 ? "0" + month : month;
  var day = nowDate.getDate();
  day = day < 10 ? "0" + day : day;
  var hour = nowDate.getHours();
  hour = hour < 10 ? "0" + hour : hour;
  var minute = nowDate.getMinutes();
  minute = minute < 10 ? "0" + minute : minute;
  var second = nowDate.getSeconds();
  second = second < 10 ? "0" + second : second;
  var _after = year + '-' + month + '-' + day;
  if (formater) {
    _after = formater.replace('YYYY', year).replace('MM', month).replace('DD', day).replace('hh', hour).replace('mm', minute).replace('ss', second);
  }
  return _after;
};

2.时间转换为日期时间戳

export const convertDate = (time) => {
  if (!time) {
    return "";
  }
  let currentTime = time;
  if (time.indexOf("Z") === -1) {
    currentTime = time.replace(/-/g, "/");
  }
  currentTime = Date.parse(currentTime);
  // currentTime = currentTime / 1000;
  return currentTime;
};

3.时间转换为日期时间戳

export const getMilliseconds = (time) => {
  if (!time) {
    return "";
  }
  // let s = '';
  // let hour = time.split(':')[0];
  // let min = time.split(':')[1];
  // s = Number(hour * 3600) + Number(min * 60);
  // return s * 1000;
  time = "1970-01-02 " + time + ":00";
  console.log(time);
  let currentTime = new Date(time).getTime();
  console.log(currentTime);
  // let HH = currentTime.getHours();
  // let MM = currentTime.getMinutes();
  // let SS = currentTime.getSeconds();
  // let MS = currentTime.getMilliseconds();
  // currentTime = ((HH * 60 + MM) * 60 + SS) * 1000;
  return currentTime;
};

4.秒转时间格式

export const getMS = (params) => {
  if (typeof (params) !== 'number') {
    return " :";
  }
  let time = "";
  let min = Math.floor(params / 60);
  let second = params % 60 < 10 ? "0" + params % 60 : params % 60;
  let h = '';
  if (min > 60 || min === 60) {
    h = Math.floor(min / 60);
    min = min % 60 < 10 ? "0" + min % 60 : min % 60;
    h = h % 60 < 10 ? "0" + h % 60 : h % 60;
    time = `${h}:${min}:${second}`;
  } else {
    min = min % 60 < 10 ? "0" + min % 60 : min % 60;
    time = `${min}:${second}`;
  }
  return time;
};

5.计算过去时间距离当前时间的时间差

天-时-分-秒-毫秒 格式

// 计算时间戳
let begintime = '2020-9-28 12:25:16'
// 时间戳为  begintime_ms
let begintime_ms = Date.parse(new Date(begintime.replace(/-/g, "/"))); 

// dateBegin为开始时间的时间戳
function timeFn(dateBegin) { 
        //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
        var dateEnd = new Date(); //获取当前时间
        var dateDiff = dateEnd.getTime() - dateBegin; //时间差的毫秒数
        var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
        var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
        var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
        //计算相差分钟数
        var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
        var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
        //计算相差秒数
        var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
        var seconds = Math.round(leave3 / 1000);

        var leave4 = leave3 % (60 * 1000); //计算分钟数后剩余的毫秒数
        var minseconds = Math.round(leave4 / 1000);
        var timeFn = "相差: " + dayDiff + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒" + minseconds + "毫秒";
        return timeFn;
      }
      // 相差: 0天0小时0分钟7秒7毫秒

秒转时间格式(h:mm:ss)

const getMS = (params) => {
  if (typeof (params) !== 'number') {
    return " :";
  }
  let time = "";
  let min = Math.floor(params / 60);
  let second = params % 60 < 10 ? "0" + params % 60 : params % 60;
  let h = '';
  if (min > 60 || min === 60) {
    h = Math.floor(min / 60);
    min = min % 60 < 10 ? "0" + min % 60 : min % 60;
    h = h % 60 < 10 ? "0" + h % 60 : h % 60;
    time = `${h}:${min}:${second}`;
  } else {
    min = min % 60 < 10 ? "0" + min % 60 : min % 60;
    time = `${min}:${second}`;
  }
  return time;
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值