中国标准时间、2021-01-11T09:49:43.000+0000等各种时间的转换、各种时间处理

1.将中国标准时间转换成yyyy-xx-nn aa-bb-cc

中国标准时间:
Thu May 12 2019 08:00:00 GMT+0800 (中国标准时间)

var d = new Date('Thu May 12 2019 08:00:00 GMT+0800 (中国标准时间)'); 
d=d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();

1.1日期时间指定格式化

/**
 * @param   {Date} date         指定日期
 * @returns {Number}
 * @description 获取指定时间所在月的天数
 */
const getMonthDays = (date) => {
  let d = new Date(date.getFullYear(), date.getMonth() + 1, 0);
  return d.getDate();
};

/**
 * @param   {Date} date         指定日期
 * @param   {String} [sFmt='yyyy-MM-dd HH:mm:ss'] 输出的日期时间格式 默认值为'yyyy-MM-dd HH:mm:ss'
 * @returns {String} 格式化后的字符串
 * @description 日期时间指定格式化
 */
const formatDate = (date, sFmt) => {
  sFmt = sFmt || "yyyy-MM-dd HH:mm:ss";
  var aWeekDay = ["日", "一", "二", "三", "四", "五", "六"],
    obj = {
      y: date.getFullYear(), // 年份,注意必须用getFullYear
      M: date.getMonth() + 1, // 月份,注意是从0-11
      d: date.getDate(), // 日期
      q: Math.floor((date.getMonth() + 3) / 3), // 季度
      w: date.getDay(), // 星期,注意是0-6
      H: date.getHours(), // 24小时制
      h: date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 12小时制
      m: date.getMinutes(), // 分钟
      s: date.getSeconds(), // 秒
      S: date.getMilliseconds(), // 毫秒
    };
  const replacefun = (m) => {
    var val = String(obj[i]);
    if (i === "w") return (m.length > 2 ? "星期" : "周") + aWeekDay[val];
    val = _.padStart(val, m.length, "0");
    return m.length === 1 ? val : val.substring(val.length - m.length);
  };
  for (var i in obj) {
    sFmt = sFmt.replace(new RegExp(i + "+", "g"), replacefun);
  }

  return sFmt;
};

1.3时间戳转化为时分秒

var toHHmmss = function (data) {
  var s = [];
  if (data) {
    var hours = parseInt(data / (1000 * 60 * 60));
    var minutes = parseInt((data - hours * 3600 * 1000) / (1000 * 60));
    var seconds = Math.round(
      (data - hours * 3600 * 1000 - minutes * 60 * 1000) / 1000
    );
    // s = (hours < 10 ? ('0' + hours) : hours) + ':' + (minutes < 10 ? ('0' + minutes) : minutes) + ':' + (seconds < 10 ? ('0' + seconds) : seconds);
    s.push(hours < 10 ? "0" + hours : hours);
    s.push(minutes < 10 ? "0" + minutes : minutes);
    s.push(seconds < 10 ? "0" + seconds : seconds);
  }
  return s;
};

1.3.1时间戳转为天

var toDDHHmmss = function (data) {
  let s = [];
  if (data) {
    let day = 0,
      hours = 0,
      minutes = 0,
      newHouer = 0;
    day = parseInt(data / (1000 * 60 * 60 * 24));
    hours = parseInt((data - (day * (1000 * 60 * 60 * 24))) / (1000 * 60 * 60));
    minutes = parseInt((data - (day * (1000 * 60 * 60 * 24)) - (hours * 1000 * 60 * 60)) / (1000 * 60));
    s.push(day < 10 && day != 0 ? "0" + day : day);
    if (day == 0) {
      s.push(hours < 10 && hours != 0 ? "0" + hours : hours);
    } else {
      s.push(hours < 10 ? "0" + hours : hours);
    }
    if (hours == 0) {
      s.push(minutes < 10 && minutes != 0 ? "0" + minutes : minutes);
    } else {
      s.push(minutes < 10 ? "0" + minutes : minutes);
    }
  }
  return s;
};

1.4格式化秒数

/**
 *
 * @param {Number} sec
 * @description 格式化秒数
 */
const formatSec = (sec) => {
  let time;
  if (!sec) {
    time = "00'" + '00"';
  } else if (sec < 10) {
    time = "00'0" + sec + '"';
  } else if (sec >= 10 && sec < 60) {
    time = "00'" + sec + '"';
  } else {
    let rem = sec / 60;
    if (Math.floor(rem) !== rem) {
      rem = sec - parseInt(sec / 60) * 60;
      if (rem < 10) {
        time = parseInt(sec / 60) + "'0" + rem + '"';
      } else {
        time = parseInt(sec / 60) + "'" + rem + '"';
      }
    } else {
      time = parseInt(sec / 60) + "'" + '00"';
    }
  }
  return time;
};

1.5秒数转化成分钟

/**
 * @param {Number} sec
 * @description 秒数转化成分钟
 */
const formatMin = (sec) => {
  let time;
  if (sec && sec < 60) {
    time = 1;
  } else {
    let rem = sec / 60;
    if (Math.floor(rem) !== rem) {
      time = parseInt(rem) + 1;
    } else {
      time = parseInt(rem);
    }
  }
  return time;
};

1.6计算时间长度

/**
 *
 * @param {String} 开始时间 09:12:00
 * @param {String} 结束时间
 * @description 计算时间长度
 */
const timeLength = (start, end) => {
  let starts = start.split(":");
  let ends = end.split(":");
  let startLong =
    Number(starts[0]) * 60 * 60 * 1000 +
    Number(starts[1]) * 60 * 1000 +
    Number(starts[2]) * 1000;
  let endLong =
    Number(ends[0]) * 60 * 60 * 1000 +
    Number(ends[1]) * 60 * 1000 +
    Number(ends[2]) * 1000;
  let result = endLong - startLong;
  return result > 0 ? result : 0;
};

2.将yyyy-xx-nn aa-bb-cc转换成中国标准时间

 var s=new Date(stime).getTime();
          var d=new Date(etime).getTime();

3.如果遇到解析毫秒时间的时候,出现2020-7-8 11-7 可以使用分开解析 也可以使用string.prototype.padStart,把指定字符串填充到字符串头部,返回新字符串。

 let d = new Date(item[0].create_time);//这个是你需要解析的时间
let year = d.getFullYear().toString();
 let month = (d.getMonth()+1).toString();
 let day = (d.getDate()).toString();
 let hour = (d.getHours()).toString();
 let min = (d.getMinutes()).toString();
 let second = (d.getSeconds()).toString();
 if (year.length<=1){
     year='0'+year;
 }
//月份为一位:
方法一:判断加0
 if (month.length<=1){
     month='0'+month;
 }
 //方法二:使用padStart()
 month =month.toString().padStart(2, '0');  //两位,如果是一位,前面填充0.如果是两位输出原字符串

//同理后面的也可以这样处理
 if (day.length<=1){
     day='0'+day;
 }
 if (hour.length<=1){
     hour='0'+hour;
 }
 if (min.length<=1){
     min='0'+min;
 }
 if (second.length<=1){
     second='0'+second;
 }
 d = year+'-'+month+'-'+day+' '+hour+':'+min+':'+second;


4.标准时间转换成毫秒数

demo:
将Sat Nov 07 2020 16:52:13 GMT+0800 (中国标准时间)转成1604739133000
1.将转换的方法封装出来

 dateToMs (date) {
                let result = new Date(date).getTime();
                return result;
            },

2.调用该方法

console.log(this.dateToMs(demoTime))

5.将毫秒数转换成yyyy-xx-mm

1.关于时间转换的两个方法

 getMyDate(str) {
                let oDate = new Date(str),
                    oYear = oDate.getFullYear(),
                    oMonth = oDate.getMonth() + 1,
                    oDay = oDate.getDate(),
                    oHour = oDate.getHours(),
                    oMin = oDate.getMinutes(),
                    oSen = oDate.getSeconds(),
                    oTime = oYear + '-' + this.addZero(oMonth) + '-' + this.addZero(oDay) + ' ' + this.addZero(oHour) + ':' +
                        this.addZero(oMin) + ':' + this.addZero(oSen);
                return oTime;
            },
   addZero(num) {
       if (parseInt(num) < 10) {
           num = '0' + num;
       }
       return num;
   },

2.调用该方法就可以转换成 2020-11-07 18:55:13

6、2021-01-11T09:49:43.000+0000转yyyy-mm-mm aa-bb-cc

  renderTime(date) {
    var dateee = new Date(date).toJSON();
    return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')
  },

7.获取当前时间

moment().format('YYYY-MM-DD HH:mm:ss');

打印结果:
“2021-05-17 13:08:46”

8.获取周几

moment().format('d');

打印结果:
“1”

9.获取从某一年开始计算到指定日期值的周数

/**
 * @param   {Date} date         指定日期
 * @param   {Number} nYear      开始计算的年份,默认为当前日期值所在年份
 * @param   {Number} nWeekStart 每周开始为周几,默认为周一
 * @returns {Number} 总周数
 * @description 获取从某一年开始计算到指定日期值的周数
 */
const getWeekFromYear = (date, nYear, nWeekStart) => {
  nWeekStart = (nWeekStart || 1) - 0;
  if (isNaN(nWeekStart) || nWeekStart > 6) nWeekStart = 1;
  if (!nYear) {
    nYear = date.getFullYear();
  }
  let dFirstDay = new Date(nYear, 0, 1);
  let nFirstWeekDays = 7 - dFirstDay.getDay() + nWeekStart;
  let nDayOfYear =
    (new Date(date.getFullYear(), date.getMonth(), date.getDate()) -
      dFirstDay) /
    (24 * 3600 * 1000) +
    1;
  return Math.ceil((nDayOfYear - nFirstWeekDays) / 7) + 1;
};

10.获取指定日期在本月的周数

/**
 *
 * @param   {Date} date         指定日期
 * @param   {Number} nWeekStart 每周开始为周几,默认为周一, 可选值1到7
 * @returns {Number} 总周数
 * @description 获取指定日期在本月的周数
 */
const getWeekFromMonth = (date, nWeekStart) => {
  nWeekStart = (nWeekStart || 1) % 7;
  if (isNaN(nWeekStart) || nWeekStart > 7) nWeekStart = 1;
  let dFirstDay = new Date(date.getFullYear(), date.getMonth(), 1);
  let nFirstWeekDays = 7 - dFirstDay.getDay() + nWeekStart;
  let nDayOfYear =
    (new Date(date.getFullYear(), date.getMonth(), date.getDate()) -
      dFirstDay) /
    (24 * 3600 * 1000) +
    1;
  return Math.ceil((nDayOfYear - nFirstWeekDays) / 7) + 1;
};
  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值