日期 时间

日期和时间笔记

创建

调用 new Date() 来创建一个新的 Date 对象。在调用时可以带有一些参数,如下所示:

new Date()
不带参数 —— 创建一个表示当前日期和时间的 Date 对象

new Date(year, month, date, hours, minutes, seconds, ms)

使用当前时区中的给定组件创建日期。只有前两个参数是必须的。

year 应该是四位数。为了兼容性,也接受 2 位数,并将其视为 19xx,例如 98 与 1998 相同,但强烈建议始终使用 4 位数。
month 计数从 0(一月)开始,到 11(十二月)结束。
date 是当月的具体某一天,如果缺失,则为默认值 1。
如果 hours/minutes/seconds/ms 缺失,则均为默认值

访问日期组件

getFullYear()

获取年份(4 位数)

getMonth()

获取月份,从 0 到 11。

getDate()

获取当月的具体日期,从 1 到 31,这个方法名称可能看起来有些令人疑惑。

getHours(),getMinutes(),getSeconds(),getMilliseconds()

获取相应的时间组件。

getDay()

获取一周中的第几天,从 0(星期日)到 6(星期六)。第一天始终是星期日,在某些国家可能不是这样的习惯,但是这不能被改变。

getTime()

返回日期的时间戳 —— 从 1970-1-1 00:00:00 UTC+0 开始到现在所经过的毫秒数。

getDay()

获取一周中的第几天,从 0(星期日)到 6(星期六)。第一天始终是星期日,在某些国家可能不是这样的习惯,但是这不能被改变。
设置日期组件

下列方法可以设置日期/时间组件:

setFullYear(year, [month], [date])
setMonth(month, [date])
setDate(date)
setHours(hour, [min], [sec], [ms])
setMinutes(min, [sec], [ms])
setSeconds(sec, [ms])
setMilliseconds(ms)
setTime(milliseconds)(使用自 1970-01-01 00:00:00 UTC+0 以来的毫秒数来设置整个日期)
以上方法除了 setTime() 都有 UTC 变体,例如:setUTCHours()。

我们可以看到,有些方法可以一次性设置多个组件,比如 setHours。未提及的组件不会被修改。

Date.now()

如果我们仅仅想要测量时间间隔,我们不需要 Date 对象。

有一个特殊的方法 Date.now(),它会返回当前的时间戳。

它相当于 new Date().getTime(),但它不会创建中间的 Date 对象。因此它更快,而且不会对垃圾回收造成额外的压力。

这种方法很多时候因为方便,又或是因性能方面的考虑而被采用,例如使用 JavaScript 编写游戏或其他的特殊应用场景。

例如

let start = Date.now(); // 从 1 Jan 1970 至今的时间戳

// do the job
for (let i = 0; i < 100000; i++) {
  let doSomething = i * i * i;
}

let end = Date.now(); // 完成

alert( `The loop took ${end - start} ms` ); // 相减的是时间戳,而不是日期

对字符串调用 Date.parse

字符串的格式应该为:YYYY-MM-DDTHH:mm:ss.sssZ,其中:

YYYY-MM-DD —— 日期:年-月-日。
字符 “T” 是一个分隔符。
HH:mm:ss.sss —— 时间:小时,分钟,秒,毫秒。
可选字符 ‘Z’ 为 ±hh:mm 格式的时区。单个字符 Z 代表 UTC+0 时区。

简短形式也是可以的,比如 YYYY-MM-DD 或 YYYY-MM,甚至可以是 YYYY。
Date.parse(str) 调用会解析给定格式的字符串,并返回时间戳(自 1970-01-01 00:00:00 起所经过的毫秒数)。如果给定字符串的格式不正确,则返回 NaN。

举个例子:

let ms = Date.parse('2012-01-26T13:51:50.417-07:00');

alert(ms); // 1327611110417  (时间戳)

日期时间封装好的方法(不要求格式可以使用)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值