js获取日期

本文汇总了JavaScript中常用的时间处理函数,包括获取年月日、时间戳、格式化日期、计算月份天数等,以及自定义封装的日期类方法,方便前端开发者在开发中便捷操作时间相关逻辑。
摘要由CSDN通过智能技术生成

一些特殊需求要用到日期,如某月的开始结束时间;时间戳转换;某月的天数等。将js一些获取时间的方法等汇总!方便自己以后查阅。

文章目录


前言

对于前端可以用一些时间插件,来快速实现所需要的时间格式,但是不太想用,所以就自己汇总一些平时开发中用到的函数和方法!

一、js时间方法

console.log(new Date().getFullYear()) // 2023    
console.log(new Date().getMonth()) // 7 月份从0-11
console.log(new Date().getDate()) // 14 天数
console.log(new Date().getHours()) // 14 小时 
console.log(new Date().getMinutes()) // 36 分钟
console.log(new Date().getSeconds()) // 秒
console.log(new Date().getDay()) // 1 星期几
console.log(new Date().getTime()) // 时间戳

二、封装的一些方法

1.时间类--返回编译后的格式化的时间

/* 
  1.时间--时间格式编译
  参数:(time:时间,formatStr:yyyy-MM-dd hh:mm:ss)
      参数1 Mon Aug 15 2022 15:06:06 GMT+0800 (中国标准时间)
      参数2 yyyy-MM-dd hh:mm:ss 
  使用:this.timeFormatData(new Date())
  功能:返回编译后的格式化的时间
*/
function timeFormatData(time, formatStr) {
  let date = new Date(time);
  let onlyDay = date.getDate();
  let onleHour = date.getHours();
  let onlyMin = date.getMinutes();
  let onlySec = date.getSeconds();
  let Y = date.getFullYear();
  let M =
    date.getMonth() + 1 < 10
      ? "0" + (date.getMonth() + 1)
      : date.getMonth() + 1;
  let D = onlyDay < 10 ? "0" + onlyDay : onlyDay;
  let h = onleHour < 10 ? "0" + onleHour : onleHour;
  let m = onlyMin < 10 ? "0" + onlyMin : onlyMin;
  let s = onlySec < 10 ? "0" + onlySec : onlySec;
  formatStr = formatStr || "YYYY-MM-DD H:m:s";
  return formatStr.replace(/YYYY|MM|DD|H|m|s/gi, function (matches) {
    return {
      YYYY: Y,
      MM: M,
      DD: D,
      H: h,
      m: m,
      s: s,
    }[matches];
  });
}

2.时间类--同上 ,多加两个方法 获取当前月份第一天和最后一天

/* 
  2.时间--时间格式编译
  参数:(fmt:yyyy-MM-dd hh:mm:ss , data)
    参数1 Mon Aug 15 2022 15:06:06 GMT+0800 (中国标准时间)
    参数2 data: this.getCurrentMonthFirst() 或 data:this.getCurrentMonthLast()
  使用:
    获取本月第一天
    this.getformat(yyyy-MM-dd,this.getCurrentMonthFirst())
    获取本月最后一天
    this.getformat(yyyy-MM-dd,this.getCurrentMonthLast())
  功能:同上 ,多加两个方法 获取当前月份第一天和最后一天
*/
function getformat(fmt, date) {
  var o = {
    "M+": date.getMonth() + 1, //月份   
      "d+": date.getDate(), //日   
      "h+": date.getHours(), //小时   
      "m+": date.getMinutes(), //分   
      "s+": date.getSeconds(), //秒   
      "q+": Math.floor((date.getMonth() + 3) / 3), //季度   
      "S": date.getMilliseconds() //毫秒   
  };
  if (/(y+)/.test(fmt))
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (var k in o)
      if (new RegExp("(" + k + ")").test(fmt))
          fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  return fmt;
}

function getCurrentMonthFirst() {
  var date = new Date()
  date.setDate(1)
  return date
}

function getCurrentMonthLast() { 
  var date = new Date(); 
  var currentMonth = date.getMonth(); 
  var nextMonth = ++currentMonth; 
  var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1); 
  var oneDay = 1000 * 60 * 60 * 24; 
  return new Date(nextMonthFirstDay - oneDay);
}

3.时间类--获取传入的年月 有几天,返回天数 

/* 
  参数:传入年, 月  如2022 , 8
  使用:this.getLastDayTime(2022,8)
  功能:获取传入的年月 有几天,返回天数 如:8月份 返回 31
*/
function getLastDayTime(year,month) {        
  var new_year = year;    //取当前的年份         
  var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)         
  if(month>12) {        
  new_month -=12;        //月份减         
  new_year++;            //年份增         
  }        
  var new_date = new Date(new_year,new_month,1);                //取当年当月中的第一天         
  return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期         
}

4.时间类--传入开始结束的年月日  返回开始到结束的日期

/* 
  参数:如:2022-08-01 2022-08-31
  使用:this.getAll(2022-08-01,2022-08-31)
  功能:传入开始结束的年月日  返回开始到结束的日期 [2022-08-01,2022-08-02,....2022-08-31,]
  补充:setUTCFullYear()方法属于js方法 返回标准化时间日期
  */
function getAll(begin, end) {
  var arr = []
  var ab = begin.split('-')
  var ae = end.split('-')
  var db = new Date()
  db.setUTCFullYear(ab[0], ab[1] - 1, ab[2])
  var de = new Date()
  de.setUTCFullYear(ae[0], ae[1] - 1, ae[2])
  var unixDb = db.getTime() - 24 * 60 * 60 * 1000
  var unixDe = de.getTime() - 24 * 60 * 60 * 1000
  for (var k = unixDb; k <= unixDe; ) {
    k = k + 24 * 60 * 60 * 1000
    arr.push(this.format(new Date(parseInt(k))))
  }
  return arr
}
function format(data) {
  var s = ''
  var mouth =
    data.getMonth() + 1 >= 10
      ? data.getMonth() + 1
      : '0' + (data.getMonth() + 1)
  var day = data.getDate() >= 10 ? data.getDate() : '0' + data.getDate()
  s += data.getFullYear() + '-' // 获取年份。
  s += mouth + '-' // 获取月份。
  s += day // 获取日。
  return s // 返回日期。
}

5.时间类--返回当前日期的星期数

/* 
  参数:日期 返回名  如:(2022-08-15 ,工作)
  使用:this.TimeZR(2022-08-15)
  功能:返回当前日期的星期数
  补充:getDay() 方法可返回一周(0~6)的某一天的数字。
      注意: 星期天为 0, 星期一为 1, 以此类推。
*/
function TimeZR(value, name) {
  let date = value ? new Date(value) : new Date();
  let str = name ? name : "星期";
  let week = date.getDay();
  switch (week) {
    case 0:
      str += "日";
      break;
    case 1:
      str += "一";
      break;
    case 2:
      str += "二";
      break;
    case 3:
      str += "三";
      break;
    case 4:
      str += "四";
      break;
    case 5:
      str += "五";
      break;
    case 6:
      str += "六";
      break;
  }
  return str
}

6.时间类--根据指定时间获取上一个月 

/* 
  功能:时间--根据指定时间获取上一个月 
  参数:data 2022-08-17 这种格式
*/
function getPreMonth(date) {
  var arr = date.split('-');
  var year = arr[0]; //获取当前日期的年份
  var month = arr[1]; //获取当前日期的月份
  var day = arr[2]; //获取当前日期的日
  var days = new Date(year, month, 0);
  days = days.getDate(); //获取当前日期中月的天数
  var year2 = year;
  var month2 = parseInt(month) - 1;
  if (month2 == 0) {
      year2 = parseInt(year2) - 1;
      month2 = 12;
  }
  var day2 = day;
  var days2 = new Date(year2, month2, 0);
  days2 = days2.getDate();
  if (day2 > days2) {
      day2 = days2;
  }
  if (month2 < 10) {
      month2 = '0' + month2;
  }
  var t2 = year2 + '-' + month2 ;
  return t2;
}

7.时间类--根据指定时间获取下一个月

/* 
  功能:时间--根据指定时间获取下一个月
  参数:data 2022-08-17 这种格式
*/
function getNextMonth(date) {
  var arr = date.split('-');
  var year = arr[0]; //获取当前日期的年份
  var month = arr[1]; //获取当前日期的月份
  var day = arr[2]; //获取当前日期的日
  var days = new Date(year, month, 0);
  days = days.getDate(); //获取当前日期中的月的天数
  var year2 = year;
  var month2 = parseInt(month) + 1;
  if (month2 == 13) {
      year2 = parseInt(year2) + 1;
      month2 = 1;
  }
  var day2 = day;
  var days2 = new Date(year2, month2, 0);
  days2 = days2.getDate();
  if (day2 > days2) {
      day2 = days2;
  }
  if (month2 < 10) {
      month2 = '0' + month2;
  }

  var t2 = year2 + '-' + month2 + '-' + day2;
  return t2;
}


总结

简单记录一下开发中遇到一些时间的处理。当然也有一些好用的插件,不过我基本不用,上面用来传参,或条件变更时候写!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值