Date类型
几个容易混淆的概念:
1、UTC 国际标准时间:1970年1月1日午夜零时开始经过的毫秒数来保存日期。可以精确到这天之前或者之后的一亿天。
创建日期对象:
1.常用用法:要求获取当前时间日期
var dateNow = new Date() //不传递任何参数的情况下,获得的是当前日期和时间。
如果传入的参数不是日期返回NaN,如果传入的是表示日期的字符串,也会默认调用Date.parse()
2.根据特定的日期和时间创建日期对象
需要用到两个方法:
a.Date.parse() 接收一个表示日期的字符串参数,根据这个字符串返回相应日期的毫秒数。通常以地区为准,示例如下:
var oneDate = new Date(Date.parse("May 25", 2001))
b.Date.UTC() 也是返回表示日期的毫秒数,参数不同,分别是年份、基于0的月份(一月是0,后续递增)、月中的哪一天0-31、小时0-23、分钟、秒、毫秒。其中前两个参数是必填的。如果没提供月中的天数,则假设天数为1天。如果省略其他参数,则为0.
var twoDate = new Date(Date.UTC(2011 0))
3.Date.now() 返回表示调用这个方法时的日期和时间的毫秒数。
var start = Date.now()
还可以利用这个方法:
var start = +new Date()
经过调用发现两个都返回的是时间戳,数值完全相同。
如何区分这两个方法?
返回的数值是一样的。都用于获取当前时间的Unix时间戳,即从1970年1月1日00:00:00 UTC到现在的秒数,但单位是毫秒。
Date.now():这是一个静态方法,返回当前时间的Unix时间戳,单位是毫秒。它不能接受任何参数,执行效率较高,因为它提供了一个统一的方式来获取时间,避免了在不同平台或浏览器中由于日期格式不同而导致的兼容性问题。
+new Date():将Date对象转换为字符串形式,这个字符串实际上表示的是Date对象的毫秒级时间戳。虽然这种方法可以接受多种日期格式,但不同的浏览器对日期格式的支持有所不同,因此使用时需要注意兼容性问题。
虽然这两个方法在某些情况下可以互换使用,但推荐使用Date.now()来获取时间戳,因为它更简单且避免了格式兼容性问题。
2、GMT:格林威治时间,比UTC晚8个小时
3、时间戳(timestamp):通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。
console.log(+new Date(), Date.now())
1729353214451 1729353214451
4、日期格式化为字符串的一些方法:
1.toDateString() 显示星期几、月、日和年
2.toTimeString() 显示时、分、秒和时区
3.toLocalDateString() 以特定于地区的格式显示星期几、月、日和年
4.toLocalTimeString() 以特定于地区的格式显示时、分、秒
5.toUTCString() 显示UTC日期,与之等价的方法还有一个是toGMTString()区别是这个函数会向后兼容。
常用的日期、时间组件的方法:
1.getTime() 返回表示日期的毫秒数
2.setTime() 以毫秒数设置日期,会改变整个日期
3.getDate() 返回日期月份中的天数 1-31
4.setDate() 设置日期月份中的天数,1-31,大于31则增加月份
5.getMonth() 返回日期中的月份,0-11
6.setMonth() 设置日期的月份,传入数值必须大于0,大于11则增加年份
7.getFullYear() 返回四位数的年份,2000
8.setFullYear() 设置日期的年份,也是传入四位数
9.getDay() 返回日期中星期的星期几,0-6
10.getHours() 返回日期中的小时数 0-23
11.setHours() 设置日期中的小时数,超过23则增加一天
12.getMinutes() 返回日期中的分钟数 0-59
13.setMinutes() 设置日期中的分钟数 0-59,超过59则增加一小时
14.getSeconds() 返回日期中的秒数 0-59
15.setSeconds() 设置日期中的秒数,大于59加一分钟
16.getMilliSeconds() 返回日期中的毫秒数
17.setMilliSeconds() 设置日期中的毫秒数
16.getTimeZoneOffset() 返回本地时间与UTC时间相差的分钟数
17.getUTCFullYear() setUTCFullYear() 返回和设置UTC年份的方法,其他的方法也都有与之配套的设置UTC相应的月份等
RegExp类型
1.两种定义方法:
字面量形式
var expression = / pattern / flags
var pattern = /a-z/g
pattern:正则表达式,包含字符类、限定符、分组、向前查找以及反向引用。
flags: 标志,有3种匹配模式,g——全局模式,会应用于所有字符串,不会在发现第一个匹配后就立即停止。i——不区分大小写,确定匹配项时会忽略模式与字符串的大小写。m——表示多行模式,到达一行末尾会继续向下查找是否有匹配的项。
2.使用RegExp构造函数来创建,接收的两个参数分别是要匹配的字符串模式、可选的标志字符串。
var pattern = new RegExp("a-z", "g")
注意事项:
- 元字符必须转义: ( [ { \ ^ $ | ) ? * + . ] } 转义的方法就是在这些符号前加反斜杠 \
- 使用RegExp构造函数创建的表达式,两个参数都是字符串形式,如果有包含元字符,需要进行双重转义。
RegExp实例属性及其方法
通过实例的属性可以取得有关模式的各种信息:
global: 布尔值,是否设置 g 标志
ignorance:布尔值,是否设置 i 标志
lastIndex: 整数,表示开始下一个匹配项的字符位置,从0算起
multiline: 布尔值,是否设置了 m 标志
source: 正则表达式的字符串表示,按照字面量形式返回。
方法:
1.exec(): 接收一个参数,即要应用模式的字符串然后返回包含第一个匹配项信息的数组,或者在没匹配项的情况下返回null。这个数组额外包含index,input属性。加全局标志也始终会返回一个匹配项。
2.test(): 接收一个字符串参数,目标字符串与之匹配的情况下返回true,否则false。通常用于if判断。
RegExp构造属性及其方法
1.input: 最近一次要匹配的字符串。 $_
2.lastMatch: 最近一次的匹配项。 $&
3.lastParen: 最近一次匹配的捕获组。 $+
4.leftContext: input字符串中lastMatch之前的文本。 $`
5.multiline: 布尔值,是否使用多行模式。 $*
6.rightContext: input字符串中lastMatch之后的文本。 $’