【前端】Date和DayJS

1、Date

   1、使用new Date()创建日期的几种方式

  • 使用日期字符串参数(ISO 8601)
  • 使用一系列参数
  • 时间戳参数
  • 不带参数

2、ISO 8601

  • `YYYY-MM-DDT:hh:mm:ss:sssZ`
  • yyyy:4位数年份
  • MM两位数月份
  • DD两位数日期
  • -日期分隔符
  • T表示开始时间
  • HH24位小时数
  • mm分钟(0-59)
  • ss秒
  • sss毫秒
  • :时间分隔符
  • Z如果存在则为UTC,否则为本地时间
  • 其中小时和比小时小的单位可以省略

不推荐是同字符串创建日期,因为创建日期的时候不指定时区会默认UTC时区,会和GMT等时区发生冲突,如果想要创建”本地时间“,则需要至少写入HH和mm,这样不同时区也能保持一致

     我们可以传入参数new Date(2019,5,11,5,23,59)使用参数创建默认本地时间,不会导致时区混淆,最好不要使用字符串创建日期

3、格式化时间

 建议自己格式化时间,也就是从对象中拿到年月日

4、比较日期

比较前后可以直接使用><=

比较相等需要获取时间戳来比较,如果只是比较是否是同一天,则定义方法,分别比较两个对象的年月日

5、修改时间

 需要注意,我们不应该在当前对象修改时间,而是创建一个新的日期对象

const foo=new Date()
const far=new Date(foo)
//设置三天后的时间
far.setDate(foo.getDate()+3)

JS还为我们提供了自动日期矫正,如果在30号+3,则会自动矫正为下个月的2号(假设没有31日)

2、Dayjs

1、解析的参数格式

  • 传入一个ISO8601格式
  • 按照格式来解析字符串
  • Unix时间戳
  • Date对象
  • 对象
  • 数组
[2010, 1, 14, 15, 25, 50, 125]
{ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123}

所有dayjs对象都是不可变的,我们可以使用clone()来获得一个对象,isValid()可以判断是否通过校验,包括传入的参数能否被正确解析为日期

设置和取值参考文档

2、操作

//增加
dayjs().add(7,"day")
//减去
dayjs().subtract(1,"year")
//返回复制的对象和他的开始时间
dayjs().startOf('year')
//返回复制对象和他结束时间
dayjs().endOf('month')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值