👀Date时间的封装

1,055 阅读4分钟
  以下内容均为本人在项目开发中所使用过的,如果有需要可以进行参考,也欢迎大家能够留言进行补充和修改!共同进步🤣

1、 获取当前时间:

  // 获取系统当前时间
  var myDate = new Date(); //例: Wed Jan 27 2021 10:42:51 GMT+0800 (中国标准时间)

  // 通过时间戳和指定日期,得到中国标准时间,再进行指定格式的切换
  // 时间戳(毫秒)
  var myDate = new Date(1611715656370); // 例:Wed Jan 27 2021 10:47:36 GMT+0800 (中国标准时间)
  // 指定日期
  var myDate = new Date("2012-12-10 12:15:15") // 例:Mon Dec 10 2012 12:15:15 GMT+0800 (中国标准时间)

code注:得到中国标准时间(myDate)后,再进行下面的格式转换

2、获取指定格式时间:

  // 获取指定格式时间
  // 获取当前日期
  myDate.toLocaleDateString(); // 例:"2021/1/27"
  // 获取当前时间 
  myDate.toLocaleTimeString(); // 例:"上午9:58:30"
  // 获取日期与时间 
  myDate.toLocaleString( ); //例:"2021/1/27 上午9:58:30"

  // 获取年
  myDate.getYear(); // 例:121
  myDate.getFullYear(); // 例:2021
  // 获取月((0-11,0代表1月) 因为是从0开始,获取的月份得加 1)
  myDate.getMonth(); // 例:当获得的结果为2的时候,实际的月份为:2+1
  // 获取日(1-31)
  myDate.getDate(); // 例:27
  // 获取星期(0-6,0代表星期天)
  myDate.getDay(); // 例:3
  // 获取当前小时数(0-23)
  myDate.getHours(); // 例:10
  // 获取当前分钟数(0-59)
  myDate.getMinutes(); // 例:47
  // 获取当前秒数(0-59)
  myDate.getSeconds(); // 例:36
  // 获取当前毫秒数(0-999)
  myDate.getMilliseconds(); // 例:370

3、获取时间戳:

  // 获取系统当前时间
  var myDate = new Date(); //例: Wed Jan 27 2021 10:42:51 GMT+0800 (中国标准时间)

  // 方法一(毫秒级时间戳)(常用):
  var timestamp=myDate.getTime(); // 例:1280977330748

  // 方法二(毫秒级时间戳):
  var timestamp =(myDate).valueOf(); // 例:1280977330748

  // 方法三: ( 获取秒级时间戳 )
  var timestamp = myDate.getTime() / 1000; // 例:1280977330000 
  var timestamp =Date.parse(myDate) / 1000; // 例:1280977330000
  // 注意:这里得到的结果将后三位(毫秒)转换成了000显示,使用时可能会出现问题。
  // 例如动态添加页面元素id的时候,不建议使用。

4、时间转换:

  // 封装方法
  // 获取时间差
  // start和end 是任何格式的时间
  getReduceTimes(start,end){
      // 获取开始和结束的时间,算出时间戳的差(得到他们相差的时间)
      let startDate = new Date(start).getTime();
      let endDate = new Date(end).getTime();
      let endReduceStart = endDate-startDate

      // 总秒数
      let totalSeconds = Math.floor(endReduceStart / 1000);
      // 天数
      let day = Math.floor(second / 3600 / 24);
      // 小时
      let hour = Math.floor(second / 3600 % 24);
      // 分钟
      let minute = Math.floor(second / 60 % 60);
      // 秒
      let second = Math.floor(second % 60);

      let dateTimes = {
          totalSeconds,
          day,
          hour,
          minute,
          second
      }
      return dateTimes;  // 返回时间差的对象,再从中获取想要的数据
  }

5、vue中设置时间过滤器:

  // 示例:
  <template>
      <div>{{ a | data}}</div>
  </template>

  export default {
      data() {
          return {
              a: Date.now()
          }
      },
      filters:{
          data(date) {
              let myDate = new Date(date);
              let year = myDate.getFullYear();
              let month = (myDate.getMonth() + 1) < 10 ? '0' + (myDate.getMonth() + 1) : (myDate.getMonth() + 1);
              let day = myDate.getDate() < 10 ? '0' + myDate.getDate() : myDate.getDate();
              let hour = myDate.getHours() < 10 ? '0' + myDate.getHours() : myDate.getHours();
              let minutes = myDate.getMinutes() < 10 ? '0' + myDate.getMinutes() : myDate.getMinutes();
              let seconds = myDate.getSeconds() < 10 ? '0' + myDate.getSeconds() : myDate.getSeconds();
              return  year+ '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds; // 返回时间格式
          }
      }
  }

5、中国标准时间 转换成 格林尼治时间方式方法:


    // 中国标准时间转换成格林尼治时间
    function formatDate(dateTime){
        let timestamp = dateTime.getTime();
        let newDate = new Date(dateTime + 8 * 3600 * 1000);
        return newDate.toISOString();  
    }
    
    let dealDate = 'Thu Apr 29 2021 15:13:21 GMT+0800 (中国标准时间)';
    const geLinDate = formatDate(new Date(dealDate));
    
    console.log(geLinDate); // "2021-04-29T15:13:21.000Z"
    

6、获取两个时间段之间的天数:

    // 1.通过时间获取:
    getDay(startTime, endTime){
        let startTimeStamp = Date.parse(new Date(startTime));
        let endTimeStamp = Date.parse(new Date(endTime));
        let date = endTimeStamp - startTimeStamp;
        let days = Math.ceil(date/(3600*24*1000));
        return days
    }
    getDay('2021-09-01', '2021-09-14');
    
    // 2.通过时间戳获取:
    getDay(startTime, endTime){
        let befo reDate = startTime.getTime();
        let nowDate = endTime.getTime();
        let date = nowDate - beforeDate
        let days = Math.ceil(date/(3600*24*1000))

        return days
    }
    getDay(new Date("2021-09-01"),new Date())
    
    
    向上取整:  Math.floor(4.2)    //  4
    向下取整:  Math.ceil(4.2)     //  5