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>

更新于:2022年12月19日

4K+ 浏览量

开启您的职业生涯

完成课程后获得认证

开始学习
广告