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

IT技术 javascript date
2021-01-12 06:24:59

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

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

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();

欲了解更多信息,您可以阅读有关文章DateMozilla开发者网络

DD/MM/YYYY - 使用moment.js

或者,您可以使用moment.jslibrary,它可能是在 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,它代表一个时刻,可以进一步转换为任何字符串格式。

您应该将正确的类型(数字)传递给构造函数。var dateObject: Date = new Date(+dateParts[2], +dateParts[1] - 1, +dateParts[0]);
2021-03-14 06:24:59
这个给出了 Fri Oct 23 2015 00:00:00 GMT+0530 (IST),如果我们只需要“23 Oct 2015”而不是完整的字符串
2021-03-17 06:24:59
全世界只有一个国家使用 MM/DD/YYYY,他们设置的默认 JavaScript 格式是什么?很烦人。
2021-03-20 06:24:59
您可以使用正则表达式将日期格式从 dd/mm/yyyy 更改为 mm/dd/yyyy,反之亦然,如下所示: const originalDate = '23/07/2020'; const newDate = originalDate.replace(/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/g,'$2/$1/ $3'); // newDate = '07/23/2020';
2021-03-21 06:24:59
上帝,让 JavaScript 在减去它之前将这个字符串转换为数字让我感到不舒服。
2021-03-28 06:24:59

这是我之前准备的...

  convertToDate(dateString) {
      //  Convert a "dd/MM/yyyy" string into a Date object
      let d = dateString.split("/");
      let dat = new Date(d[2] + '/' + d[1] + '/' + d[0]);
      return dat;     
  }

我发现默认的 JS 日期格式不起作用。

所以我用toLocaleStringoptions

const event = new Date();
const options = { dateStyle: 'short' };
const date = event.toLocaleString('en', options);

得到:DD/MM/YYYY格式

有关更多格式选项,请参阅文档:https : //www.w3schools.com/jsref/jsref_tolocalestring.asp

这不是 OP 所要求的。他们试图将字符串转换为日期。
2021-04-11 06:24:59

虽然大多数响应都与拆分字符串或使用本地日期方法有关,但使用 RegEx 的两个密切相关的响应(即 [drgol] 的回答和 [Tomás Hugo Almeida] 的评论)都对捕获组的使用具有指导意义。它们的简洁性也有助于说明捕获并将其与匹配区分开来的value- 两个相关的概念可能会使新的 RegEx 用户感到困惑。此代码块合并了他们的 2 个答案,但请参阅上面的原件:const origDate = '23/07/2020'; const newDate = origDate.replace(/(\d+[/])(\d+[/])/, '$2$1'); // newDate = '07/23/2020';

这是一种将带有一天中的时间的日期字符串转换为日期对象的方法。例如将“20/10/2020 18:11:25”(“DD/MM/YYYY HH:MI:SS”格式)转换为日期对象

    function newUYDate(pDate) {
      let dd = pDate.split("/")[0].padStart(2, "0");
      let mm = pDate.split("/")[1].padStart(2, "0");
      let yyyy = pDate.split("/")[2].split(" ")[0];
      let hh = pDate.split("/")[2].split(" ")[1].split(":")[0].padStart(2, "0");
      let mi = pDate.split("/")[2].split(" ")[1].split(":")[1].padStart(2, "0");
      let secs = pDate.split("/")[2].split(" ")[1].split(":")[2].padStart(2, "0");
    
      mm = (parseInt(mm) - 1).toString(); // January is 0
    
      return new Date(yyyy, mm, dd, hh, mi, secs);
    }