如何在JavaScript中将字符串转化为日期:JS里的日期解析技巧
日期是一个相当基本的概念。我们一直在使用它们。计算机也一直在使用它们。但是,使用JavaScript解析日期可能有点......嗯,有趣。
在这篇文章中,我们将:
- 讨论日期格式化问题
- 用JavaScript把一个小的字符串变成一个合适的日期对象。
- 将一个日期对象解析成一个数字
- 展示一种使用参数而不是字符串来创建日期对象的替代方法。
日期是很棘手的,但它们的使用也是非常有帮助的。而一旦你花了一点时间去了解基础知识,你的信心就会增强:
什么是JavaScript中的日期格式?
当然是ISO 8601!这是交流日期和时间数据的国际标准的名称。在JavaScript中处理日期时,我们需要使用这种格式。
下面是这个格式的样子。你已经对它很熟悉了--它只是把日期和时间合并成一个大的信息,让JavaScript可以很方便地使用:
// YYYY-MM-DDTHH:mm:ss.sssZ
// A date string in ISO 8601 Date Format
如何在JavaScript中使用new Date()
构造函数
new Date()
是在JavaScript中创建一个新日期的构造函数。震惊吧!????
如果你没有向新的日期构造函数传递任何东西,它将给你一个当前日期和时间的日期对象:
new Date()
// Thu Jun 23 2022 20:35:51 GMT-0400 (Eastern Daylight Time)
在没有任何参数的情况下创建的新日期会返回当前的日期和时间。
请注意,除了月、日和年之外,一个日期对象可以,而且经常应该包含精确到毫秒的时间。
如何用一个字符串创建一个新的日期
你可以将一个日期字符串传入new Date()
来创建一个日期对象。
在创建日期对象时,你不需要指定时间。
new Date('2022-06-13')
是完全有效的。然而,当你在控制台记录这个新的日期时,你会看到一个时间将被自动分配,尽管我们没有声明一个时间:
let aDate = new Date('2022-06-13')
// Sun Jun 12 2022 20:00:00 GMT-0400 (Eastern Daylight Time)
一个没有声明时间的字符串日期仍然会被分配一个时间。
这可能会在矩阵中产生分裂,最好是包含一个完整的日期。例如,由于本地系统时间被用来解释日期,取决于你的计算机在世界的哪个地方,你可以从同一个非特定的日期得到不同的结果。
因此,当把一个字符串传入new Date()
,使用一个完整的日期,包括小时:分钟.毫秒。
如下图所示,一个大写的T将日期部分与时间部分分开。
new Date('2022-05-14T07:06:05.123')
// Sat May 14 2022 07:06:05 GMT-0400 (Eastern Daylight Time)
尽可能使用完整的日期和时间
如何用数字创建一个新的日期
你也可以在new Date()
构造函数中传递一个数字。下面会有更多关于数字代表的内容--但是new Date(1656033105000)
,比如说,会返回一个合法的日期:
console.log(Date(1656033105000))
// Thu Jun 2022 21:12:06 GMT-0400 (Eastern Daylight Time)
巨大的数字也代表日期
如何用参数创建一个新的日期
下面还有更多的内容......你最多可以向new Date()
传递七个参数,为日期构造函数创建一个更简单的日期和时间表示方法:
new Date(2022,03,14,07,33,245)
// Thu Apr 14 2022 07:37:05 GMT-0400 (Eastern Daylight Time)
一个从年份开始到毫秒结束的参数递减列表
什么是Date.parse()?
所以,如果你在一个日期对象上使用parse方法,会发生一件有趣的事情。它吐出了一个巨大的数字。
Date.parse()
告诉我们自1970年1月1日以来已经过去了多少毫秒。这在比较多个日期时很有帮助。当它们被转换为数字而不是字符串时,更容易比较和测量日期的差异:
let anotherDate = new Date(2012,07,12,12,00,234)
Date.parse(anotherDate)
// 1344787434000
Date.parse 返回自1970年1月1日以来的毫秒数。
哪一个更好--用论据或字符串制作的日期?
在约会时,为了长期的成功,要学会很好的争论。当在JavaScript中使用日期时,为了长期的成功,使用参数而不是字符串。
new Date(2022, 00, 12, 8, 01, 33, 456)
这比用字符串创建一个日期要容易一些。参数是按降序输入的,从年份开始,到毫秒结束。
这里唯一棘手的部分是:月份的索引为零。所以,一月是00:
new Date(2022,00,12,8,01,33,456)
// Wed Jan 12 2022 08:01:33 GMT-0500 (Eastern Standard Time)
在使用日期结构的参数时,不要忘记月份是零索引的。
如何更深入地使用Javascript日期
这只是Date对象的皮毛,请查看MDN的深入研究。就像所有的事情一样,那里是一个信息的宝库。
不过,你现在已经掌握了基础知识。去把它付诸实践吧。你现在知道如何用new Date()
在JavaScript中创建一个日期对象了。你可以通过不向构造函数传递任何东西来获取当前的日期和时间,或者你可以传递一个字符串、一个数字或参数。
感谢阅读
谢谢你的阅读!我在这里写关于设计和开发的文章:https://blog.eamonncottrell.com/
你也可以在Twitter和LinkedIn上找到我。
祝你有个愉快的一天!