js获取某天日期,当前时间,时间戳转换

1. 获取n天前日期

    console.log(getDate(0), '当前日期-------------->')  //yyyy-MM-dd
    console.log(getDate(-1), '昨天日期-------------->')  //yyyy-MM-dd
    console.log(getDate(-8), '8天前日期-------------->')  //yyyy-MM-dd
    console.log(getDate(1), '明天日期-------------->')  //yyyy-MM-dd
    console.log(getDate(10), '10天后日期-------------->')  //yyyy-MM-dd


    function getDate(num) {
      var date1 = new Date();
      //今天时间
      var time1 = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date1.getDate();
      var date2 = new Date(date1);
      date2.setDate(date1.getDate() + num);
      //num是正数表示之后的时间,num负数表示之前的时间,0表示今天
      var time2 = addZero(date2.getFullYear()) + "-" + addZero((date2.getMonth() + 1)) + "-" + addZero(date2.getDate());
      return time2;
    }

    function addZero(num) {//补0方法
      if (parseInt(num) < 10) {
        num = '0' + num;
      }
      return num;
    }

 2. 获取当前月份的第一天和最后一天

    // 当前月份第一天
	function getCurrentMonthFirst(){
        var date = new Date();
        date.setDate(1);
        var month = parseInt(date.getMonth()+1);
        var day = date.getDate();
        if (month < 10) {
            month = '0' + month
        }
        if (day < 10) {
            day = '0' + day
        }
        return date.getFullYear() + '-' + month + '-' + day;
    }
    // 当前月份最后一天
	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;
        var lastTime = new Date(nextMonthFirstDay-oneDay);
        var month = parseInt(lastTime.getMonth()+1);
        var day = lastTime.getDate();
        if (month < 10) {
            month = '0' + month
        }
        if (day < 10) {
            day = '0' + day
        }
        return date.getFullYear() + '-' + month + '-' + day;
    }

3. 获取当前周的第一天和最后一天 

    /**
     * 获取当前周 第一天 和 最后 一天
     */
    function getCurrWeek(){
        var d = new Date();
        var year = d.getFullYear();
        var month = parseInt(d.getMonth())+1;

        //获取周一
        var beginWhereTheTime = GetMondayAndSunday(d);
        var dd = new Date(beginWhereTheTime);
        //获取周天
        dd.setDate(dd.getDate()+6);
        var monthSunday = parseInt(dd.getMonth())+1;
        var endWhereTheTime = dd.getFullYear() + "-" + formatDate(monthSunday) + "-" + formatDate(dd.getDate());

        return {
            "Monday":beginWhereTheTime,
            "Sunday":endWhereTheTime
        }
    }
     //获取指定日期所在周周一
    function GetMondayAndSunday(dd) {
        var week = dd.getDay(); //获取时间的星期数
        var minus = week ? week - 1 : 6;
        dd.setDate(dd.getDate() - minus); //获取minus天前的日期
        var y = dd.getFullYear();
        var m = dd.getMonth() + 1; //获取月份
        var d = dd.getDate();
        return y + "-" + formatDate(m) + "-" + formatDate(d);
    }
    //格式化月和日为MM、dd
    function formatDate(value){
        if(value < 10){
            value = "0" + value;
        }
        return value;
    }

 4. 获取某个日期(yyyy-MM-dd)为周几

    // 获取yyyy-MM-dd 为周几?
    function getWeek(date) {
      var weekArray = new Array("周日", "周一", "周二", "周三", "周四", "周五", "周六");
      var week = weekArray[new Date(date).getDay()];
      return week;
    }

 5. 获取当前时间24小时制

    let currentTime = new Date().toLocaleTimeString('chinese', { hour12: false })
    console.log(currentTime, '当前时间-------------->')  //HH:mm:ss

 6. 标准时间转为时间戳

    /**
     * 标准时间转为时间戳(13位)
     * dateTime格式:yyyy-MM-dd HH:mm:ss  如果为yyyy-MM-dd格式  则默认为08:00:00
     * 如果不传dateTime 就是当前时间
     */

    // 1.只能精确到秒
    let timeStamp = Date.parse(new Date(dateTime))
    // 2.获取到具体的毫秒值
    let timeStamp = (new Date()).valueOf()
    // 3.获取到具体的毫秒值(推荐使用 ①)
     ① let timeStamp = new Date().getTime()
     ② let timeStamp = Date.now()

7. 时间戳转为标准时间 (yyyy-MM-dd HH:mm:ss)

    // 时间戳转为标准时间
    function timeStampTodateTime(timeStamp) { //timeStamp:毫秒格式,即13位   如果是秒就 *1000
      let s = new Date(timeStamp)
      let y = s.getFullYear()
      let m = (s.getMonth() + 1) < 10 ? '0' + (s.getMonth() + 1) : (s.getMonth() + 1)
      let dd = s.getDate() < 10 ? '0' + s.getDate() : s.getDate()
      let hh = s.getHours() < 10 ? '0' + s.getHours() : s.getHours()
      let mm = s.getMinutes() < 10 ? '0' + s.getMinutes() : s.getMinutes()
      let ss = s.getSeconds() < 10 ? '0' + s.getSeconds() : s.getSeconds()
      let enddate = y + '-' + m + '-' + dd + ' ' + hh + ':' + mm + ":" + ss
      return enddate
    }

8. 将Tue Mar 08 2022 16:43:57 GMT+0800 (中国标准时间)转为标准时间格式(yyyy-MM-dd HH:mm:ss) 

function dateFormat(value) {
  var date = new Date(value);
  var YY = date.getFullYear() + '-';
  var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  var DD = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
  var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  var ss = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  return YY + MM + DD + ' ' + hh + mm + ss;
}