JavaScript 中的字符串转日期
本文将讨论如何在 JavaScript 中将字符串值转换为 Date 对象。有两种方法可以实现这一点:
使用 Date 类构造函数 - 此构造函数接受表示日期值的字符串值,将其转换为 Date 对象,并返回结果。
使用 Date.parse() 方法 - 与 Date 构造函数相同,此方法接受字符串值,解析并以毫秒形式返回日期值。
让我们通过示例来看看这些解决方案:
使用 Date() 构造函数
将字符串转换为日期对象最常用的方法是使用Date()类的构造函数。以下是 Date 构造函数的语法:
var date = new Date('date_string');
它接受各种形式的参数。
新的Date()返回当前系统日期和时间,包括本地系统的时区信息。如果您没有在新 Date() 函数中传递参数。
将日期对象作为参数传递。新的Date()将返回由作为参数传递的日期字符串呈现的日期对象。
当我们将字符串格式的日期传递给新的Date()时,它将被转换为日期对象。为了使其工作,字符串格式需要为yyyy-mm-dd。其他日期格式可能无法通过此方法转换为日期对象。
示例
在这个例子中,我们检查哪个日期格式在Date类的构造函数中有效。
<!DOCTYPE html> <html lang="en"> <head> <title></title> </head> <body> <script> var date1 = new Date("2022-08-04"); // here we are taking yyyy-mm-dd format var date2 = new Date("2022/08/03"); // here we are taking yyyy/mm/dd format var date3 = new Date("2022-15-03"); // here we are taking yyyy/dd/mm format var date4 = new Date("15-02-2022"); // here we are tacking dd/mm/yyyy format document.write(date1 + "<br>"); document.write(date2 + "<br>"); document.write(date3 + "<br>"); document.write(date4 + "<br>"); </script> </body> </html>
注意 - 只有当新的 Date()符合ISO 8601 格式yyyy-mm-dd hh-mm-ss时,才能用于将字符串转换为日期。
使用 date.parse() 方法
Date.Parse()是转换字符串日期的另一种解决方案。它返回一个数值,而不是日期对象。因此,如果您期望得到一个日期对象,则需要进一步处理。
此方法将给定的日期转换为表示毫秒的数值。返回值是从1970年1月1日午夜开始的毫秒数。它与时间戳格式相同,区别在于Date.parse()返回毫秒值,而不是秒值。
示例
在下面的示例中,我们将字符串日期转换为日期格式。但这里的返回值是毫秒。
<!DOCTYPE html> <html lang="en"> <body> <p>Date.Parse Method</p> <script> var date1 = Date.parse("2022-08-04"); // here we are taking yyyy-mm-dd format var date2 = Date.parse("2022/08/03"); // here we are taking yyyy/mm/dd format var date3 = Date.parse("2022-15-03"); // here we are taking yyyy/dd/mm format var date4 = Date.parse("15-02-2022"); // here we are tacking dd/mm/yyyy format document.write(date1 + "<br>"); document.write(date2 + "<br>"); document.write(date3 + "<br>"); document.write(date4 + "<br>"); </script> </body> </html>
注意 -
Date.parse()与 new Date() 相同,除了返回类型不同,这使得它最适合检查日期值是否具有正确的格式,也可以通过使用dateObj.setTime(Date.parse(DateString))来分配日期。
Date.Parse()返回毫秒,即使不将它们转换为具有new Date()的实际日期对象,也可以用于精确比较日期。
示例
在下面的示例中,我们可以看到,当涉及到它可以接受的输入值类型时,Date.parse()与 new Date()相同,但前提是日期格式有效。
尤其是在处理 API 响应值时。在这种情况下,我们可能需要执行检查以确保后端返回的值确认 Date.parse() 或甚至 new Date() 函数接受的日期格式。只需一个isNaN()检查就可以帮助识别并安全地进入日期转换方法。
<!DOCTYPE html> <html lang="en"> <body> <p>Date.Parse Method and new Date() Method</p> <script> let stringsFromAPI = ["2022-08-04", "20-11-2022"]; stringsFromAPI.forEach((d) => { if (!isNaN(Date.parse(d))) { console.log(new Date(d)); } }); </script> </body> </html>