如何将 dd/mm/yyyy 字符串转换为 JavaScript Date 对象?

新手上路,请多包涵

如何将格式为 23/10/2015 的日期转换为

JavaScript 日期格式:

 Fri Oct 23 2015 15:24:53 GMT+0530 (India Standard Time)

原文由 Raja Manickam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

MM/DD/YYYY 格式

如果你有 JavaScript 默认MM/DD/YYYY 格式,你可以简单地将你的字符串传递给 Date(string) 构造函数。它会为你解析它。

 var dateString = "10/23/2015"; // Oct 23

 var dateObject = new Date(dateString);

 document.body.innerHTML = dateObject.toString();

DD/MM/YYYY 格式 - 手动

如果您使用这种格式,那么您可以拆分日期以分别获取日、月和年,然后在另一个构造函数中使用它 - Date(year, month, day)

 var dateString = "23/10/2015"; // Oct 23

 var dateParts = dateString.split("/");

 // month is 0-based, that's why we need dataParts[1] - 1
 var dateObject = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]);

 document.body.innerHTML = dateObject.toString();

有关更多信息,您可以阅读 Mozilla Developer Network 上有关 Date 的文章。

DD/MM/YYYY - 使用 moment.js

或者,您可以使用 moment.js 库,它可能是 JavaScript 中最流行的用于解析和操作日期和时间的库:

 var dateString = "23/10/2015"; // Oct 23

 var dateMomentObject = moment(dateString, "DD/MM/YYYY"); // 1st argument - string, 2nd argument - format
 var dateObject = dateMomentObject.toDate(); // convert moment.js object to Date object

 document.body.innerHTML = dateObject.toString();
 <script src="https://momentjs.com/downloads/moment.min.js"></script>

在所有三个示例中, dateObject 变量都包含一个 Date 类型的对象,它代表一个时间点,并且可以进一步转换为任何字符串格式。

原文由 Yeldar Kurmangaliyev 发布,翻译遵循 CC BY-SA 4.0 许可协议

解析一个字符串以创建另一个字符串,然后由内置解析器解析不是一种有效的策略,尤其是当两个字符串都不是 ECMA-262 支持的格式时。

更有效的策略是解析字符串一次并将部分直接提供给构造函数,避免第二次解析,例如

 const parseDMY = s => {
 let [d, m, y] = s.split(/\D/);
 return new Date(y, m-1, d);
 };

 console.log(parseDMY('23/10/2015').toString());

Date.parse 仅支持以下生成的格式:

  1. Date.prototype.toString

  2. Date.prototype.toISOString

  3. Date.prototype.toUTCString

任何其他格式(包括 m/d/y)的解析取决于实现。

原文由 RobG 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题