JavaScript 玩转时间对象 Date

JavaScript 玩转时间对象 Date_第1张图片
JavaScript

0x01 内容介绍

许多朋友在开发的过程中总会遇到各种有关时间的问题,如获取某特定时间的时间戳、把时间对象格式化等等,本篇文章将会帮助大家总结并解决一些常用的时间问题,您可以把它当成一篇字典文章,方便今后查阅、使用

0x02 时间戳

const date = new Date(); //获取时间对象
date.getTime(); //获取当前的时间戳,从1970年1月1日零点到现在的毫秒数
Math.round(date.getTime()/1000); //获取当前的时间戳,根据毫秒数四舍五入的结果
Math.floor(date.getTime()/1000); //获取当前的时间戳,根据毫秒数下舍入
Date.parse(date); // 获取当前时间戳,毫秒是0

0x03 获取日期和时间

let date = new Date();
let year = date.getFullYear();//获取完整的年份(4位,1970-????)
let month = date.getMonth() + 1;//获取当前月份(0-11,0代表1月)
let day = date.getDate();//获取当前日(1-31)
let weekDay = date.getDay();//获取当前星期X(0-6,0代表星期天)
let hour = date.getHours();//获取当前小时数(0-23)
let minute = date.getMinutes();//获取当前分钟数(0-59)
let second = date.getSeconds();//获取当前秒数(0-59)
let milliseconds = date.getMilliseconds();//获取当前毫秒数(0-999)

let setWeekDay = '';
switch (weekDay) {
  case 0:
    setWeekDay = '星期天';
    break;
  case 1:
    setWeekDay = '星期一';
    break;
  case 2:
    setWeekDay = '星期二';
    break;
  case 3:
    setWeekDay = '星期三';
    break;
  case 4:
    setWeekDay = '星期四';
    break;
  case 5:
    setWeekDay = '星期五';
    break;
  case 6:
    setWeekDay = '星期六';
    break;
}

console.log(`今天是${year}年${month}月${day}日 ${setWeekDay} ${hour}时${minute}分${second}秒 ${milliseconds}毫秒`);

// 下面三个语句是在 Node 环境里运行的结果,浏览器里运行的结果与这个不同
date.toLocaleDateString();     //获取日期,YYYY-MM-DD
date.toLocaleTimeString();     //获取时间,HH:mm:ss
date.toLocaleString();        //获取日期与时间,YYYY-MM-DD HH:mm:ss

0x04 实战

要求:写一个通用函数或者类,可以获取当前时间或者用户自定义时间的时间戳和时间格式,也可以实现两者的相互转换

class Datetime {
  constructor(date) {
    if(date) {
      if (date instanceof Date) {
        this.date = date;
      } else {
        throw new Error('构造函数参数错误,应传Date()对象')
      }
    } else {
      this.date = new Date();
    }
  }

  // 转化成时间戳
  transTimeStamp() {
    return this.date.getTime();
  }

  // 转化为时间格式 YYYY-MM-DD HH:mm:ss
  transDateTime() {
    const {date, dateTimeFormat} = this;
    let year = date.getFullYear();//获取完整的年份(4位,1970-????)
    let month = dateTimeFormat(date.getMonth() + 1);//获取当前月份(0-11,0代表1月)
    let day = dateTimeFormat(date.getDate());//获取当前日(1-31)
    let hour = dateTimeFormat(date.getHours());//获取当前小时数(0-23)
    let minute = dateTimeFormat(date.getMinutes());//获取当前分钟数(0-59)
    let second = dateTimeFormat(date.getSeconds());//获取当前秒数(0-59)
    return `${year}-${month}-${day} ${hour}:${minute}:${second}`
  }

  // 格式化
  dateTimeFormat(v) {
    return v < 10 ? `0${v}` : `${v}`
  }

  setDateTime(date) {
    if(date) {
      if (date instanceof Date) {
        this.date = date;
      } else {
        throw new Error('setDateTime函数参数错误,应传Date()对象')
      }
    } else {
      this.date = new Date();
    }
  }
}

// 实现
const date = new Datetime();
console.log(date.transDateTime());
console.log(date.transTimeStamp());
date.setDateTime(new Date('2017-06-05 12:22:23'));
console.log(date.transDateTime());
console.log(date.transTimeStamp());

作者 小菜荔枝 转载请联系作者获得授权

你可能感兴趣的:(JavaScript 玩转时间对象 Date)