el-date-picker设置默认日期_JS日期方法操作大全,看这篇就够了

关注前端达人,与你共同进步

译者:前端小智

原文:https://css-tricks.com/everything-you-need-to-know-about-date-in-javascript/

JS中的 Date 很奇怪。当我们需要处理日期和时间的时候比较麻烦,经常借助像date-fns和 Moment 这样的库。

但是我们并不总是需要使用库。如果知道要注意一些常用的,日期实际上可以非常简单。接下介绍有关 Date对象的所有信息。

时区

我们的世界有数百个时区。在JavaScript中,我们只关心两个, 本地时间协调世界时(UTC)。

  • 本地时间是指你的计算机所在的时区。

  • UTC实际上是格林威治标准时间(GMT)的同义词

默认情况下,JS中的几乎每个日期方法(除了一个)都是本地时间。只有指定UTC,才能获得 UTC 时间 。

创建日期

可以使用 newDate() 来创建日期,传入的参数通常有4种常用的方式:

  1. 使用日期字符串参数

  2. 使用一系列的参数

  3. 时间戳参数

  4. 不带参数

使用日期字符串参数

new Date('1988-03-21')

这种方式方便且直观。

如果现在写的是 21-03-1988,我们可以毫不费力想表达的是1988年3月21日。但是如果用JS 编写21-03-1988,则会得到无效的日期。

这是有原因的。

在世界的不同地方以不同的方式解释日期字符串。例如 11-06-2019是 2019年6月11日还是 2019年11月6日。你不能确定我指的是哪一个,除非你知道我正在使用的日期系统。

在JS中,如果要使用日期字符串参数,则需要使用全球都能接受的格式,其中一种格式是ISO 8601扩展格式。

// ISO 8601 Extended format

`YYYY-MM-DDTHH:mm:ss:sssZ`

  • YYYY:4位数年份

  • MM:两位数月份(即 1月为01,12月为12)

  • DD:两位数的日期(0到31)

  • -:日期分隔符

  • T:表示开始时间

  • HH:24位小时数(0到23)

  • mm:分钟(0到59)

  • ss:秒(0到59)

  • sss:毫秒(0到999)

  • ::时间分隔符

  • Z:如果存在 Z,则日期将设置为UTC,如果 Z不存在,则为本地时间。

其中小时,分钟,秒和毫秒是可选的,如果你想创建一个2019年6月11日的日期,可以这样写:

new Date('2019-06-11')

在这里要特别注意,使用日期字符串参数创建日期存在很大问题,把创建的日期打印出来就可以发现问题。

如果你住在格林威治标准时间(GMT)晚的的地区,你会得到一个日期是 6月10日

如果你住在比格林威治标准时间早的地区,才会等得到 6月11日的日期。

发生这种情况是因为日期字符串参数的方法具有特殊行为:如果创建日期(未指定时间),则会获得UTC格式设置的日期。

在上面的场景中,使用 newDate('2019-06-11') 创建日期时,实际上创建的日期是2019年6月11日,UTC时间上午12点。这就是为什么住在格林尼治标准时间之后的地区的人得到的是 6月10日而不是 6月11日

如果要使用日期字符串参数方法在“本地时间”中创建日期,则需要包括时间。如果包含时间,则需要至少写入 HH和 mm

new Date('2019-06-11T00:00')

使用日期字符串参数的创建的本地时间与UTC的比较可能是一个难以捕捉的错误。所以,建议不要使用日期字符串创建日期方式。

格林威治标准时间GMT 十七世纪,格林威治皇家天文台为了海上霸权的扩张计画而进行天体观测。1675年旧皇家观测所(Old Royal Observatory) 正式成立,到了1884年决定以通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有一个标志24小时的时钟,显示当下的时间,对全球而言,这里所设定的时间是世界时间参考点,全球都以格林威治的时间作为标准来设定时间,这就是我们耳熟能详的「格林威治标准时间(Greenwich Mean Time,简称G.M

你可能感兴趣的:(js,date,加一天,js,date格式化,js,date转成,时间字符串,js,字符串转日期,js,当前日期)