《红宝书》 |基本引用类型-Date

yacP39.png

创建对象

Date类型将日期保存为自协调世界时(UTC,Universal Time Coordinated)时间1970年1月1日零时至今所经过的毫秒数。它接受一个毫秒数(1970年1月1日零时之后的毫秒数)作为参数,以创建其他日期和时间。

let now=new Date()//当前的日期和时间
let other=new Date(1111111111)

一般来说我们是不知道指定日期的毫秒数是多少的,ESMAScript提供了两个辅助方法帮助我们转换指定日期为毫秒数:Date.parse()Date.UTC()

辅助方法

  • Date.parse():接受一个表示日期的字符串作为参数,将其转换为对应的毫秒数。它支持一下格式:

    //1. “月/日/年”——如:“2/4/2021”
    //2. “月名 日,年”——如:“May 23,2019”
    //3. "周几 月名 日 年 时:分:秒 时区"——如“Tue May 23 2019 00:00:00 GMT-0700”
    //4. IS0 8601扩展格式“YYYY-MM-DDTHH:mm:ss.sssZ”——如"2021-02-04T11::47:00"(只适用于兼容E5的实现)
    
    let someDate=new Date(Date.parse("Feb 4,2021"))
    //可直接传,后台会自动调用Date.parse()
    let otherDate=new Date("Feb 5,2021")
    
  • Date.UTC():接受年、月(0-11)、日(0-30)、时(0-24)、分、秒、毫秒作为参数,将其转换为对应的毫秒数。其中年、日是必需的,如果不提供日,默认为1日,其他参数默认为0:

    let someDate = new Date(Date.UTC(2021, 1, 4));
    let otherDate = new Date(Date.UTC(2021, 1, 4, 12, 17, 22));
    //可以直接传参数,后台会自动调用Date.UTC()
    let someDate = new Date(2021, 1, 4);
    let otherDate = new Date(2021, 1, 4, 12, 17, 22);
    
  • Date.now():返回方法执行时的毫秒数。

    //起始时间
    let start=Date.now()
    //结束时间
    let stop=Date.now()
    //时间间隔
    let result=stop-start
    

获取特定部分

  • getFullYear():年份
  • getMonth():月份(0表示一月份)
  • getDate():哪一日(1—31)
  • getDay():周几(0 表示星期日)
  • getHours():小时
  • getMinutes():分钟
  • getSeconds():秒
  • getMilliseconds():毫秒数
  • getTimezoneOffset():返回UTC相对于当前时区的时间差值,单位为分钟
const date = new Date()//Thu Feb 04 2021 22:41:20 GMT+0800 (中国标准时间)
date.getFullYear()//2021
date.getMonth()//1
date.getDate()//4
date.getDay()//4
date.getHours()//22
date.getMinutes()//41
date.getSeconds()//20
date.getMilliseconds()//100
date.getTimezoneOffset()//-480

设置特定部分

  • setFullYear(year):年份
  • setMonth(month):月份
  • setDate(date):哪一日(从1--31)
  • setHours(hour):小时
  • setMinutes(minutes):分钟
  • setSeconds(seconds):秒

继承的方法

Date类型重写了toLocaleString()toString()valueOf()。它们都接受locales(地区) 和 options(相关配置)作为参数:

  • toLocaleString():返回该日期对象的字符串,格式因不同语言而不同。
  • toString():转化为字符串。
  • valueOf():返回原始值。(这里是距离1970年1月1日零时的毫秒数)
let date = new Date()//Sat Dec 12 2020 08:00:00 GMT+0800 (中国标准时间)
date.toLocaleString()//2020/12/12上午8:00:00
date.toLocaleString('ko-KR', { timeZone: 'UTC' })//2020. 12. 12. 오전 12:00:00
date.toString()//Sat Dec 12 2020 08:00:00 GMT+0800 (中国标准时间)
date.valueOf()//1607731200000

格式化与毫秒数

  • toDateString():返回日期部分的字符串
  • toLocaleDateString():返回日期部分的字符串,格式因不同语言而不同。
  • toTimeString():返回时间部分的字符串
  • toLocaleTimeString():返回时间部分的字符串,格式因不同语言而不同。
let date = new Date(2020, 11, 12);
//日期部分
date.toDateString()//Sat Dec 12 2020
date.toLocaleDateString()//2020/12/12
date.toLocaleDateString('de-DE')//12.12.2020
//时间部分
date.toTimeString()//00:00:00 GMT+0800 (中国标准时间)
date.toLocaleTimeString()//上午12:00:00
date.toLocaleTimeString('en-US')//12:00:00 AM
  • getTime():返回值一个数值,表示从1970年1月1日0时0分0秒距离该日期对象所代表时间的毫秒数。

  • setTime():以一个表示从1970-1-1 00:00:00 UTC计时的毫秒数为来为 Date 对象设置时间。

    let date = new Date(2021, 2, 4);
    let date1=date.getTime()//1614787200000
    date2.setTime(date1);
    

相关文章:
js封装 |时间对象相关方法

原文地址:https://www.cnblogs.com/sanhuamao/p/14375544.html