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

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

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

MM/DD/YYYY 格式

如果您有 MM/DD/YYYY格式的 JavaScript 的默认设置,您可以简单地将字符串传递给 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>

In all three examples dateObject variable contains an object of type Date, which represents a moment in time and can be further converted to any string format.

var date = new Date("enter your  date");//2018-01-17 14:58:29.013

只要一行就足够了,不需要做任何类型的 splitjoin,等:

$scope.ssdate=date.toLocaleDateString();//  mm/dd/yyyy format

下面是一种将带有一天中的某个时间的日期字符串转换为日期对象的方法。例如,将“20/10/202018: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);
}

我发现默认的 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

var dateString = "23/10/2015"; // Oct 23
var newData = dateString.replace(/(\d+[/])(\d+[/])/, '$2$1');
var data = new Date(newData);


document.body.innerHTML = date.toString();ere
<!DOCTYPE html>


<script>


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


d = dateString.split("/");


x = d[1] + "/" + d[0] + "/" + d[2];    //"10/23/2015"
y = d[2] + "/" + d[1] + "/" + d[0];    //"2015/10/23"


alert(
new Date(x) + "\n\n" +
new Date(y) + "\n\n" +
new Date(dateString) + "\n" +
"");


</script>

你可以使用这个简短的函数

// dateString: "15/06/2021"
  

const stringToDate = (dateString) => {
const [day, month, year] = dateString.split('/');
return new Date([month, day, year].join('/'));
};


document.body.innerHTML = stringToDate("15/06/2021").toString();

虽然大多数回复都与分割字符串或使用原生日期方法有关,但使用 RegEx 的两个密切相关的回复(即,由[ drgol ]回答和由[ Tomás Hugo Almeida ]评论)都对使用捕获组有指导意义。它们的简洁性还有助于说明捕获和 区别于匹配这两个相关概念的价值——这两个概念可能会使新的 RegEx 用户感到困惑。这个代码块合并了他们的2个答案,但是见上面的原件: const origDate = '23/07/2020'; const newDate = origDate.replace(/(\d+[/])(\d+[/])/, '$2$1'); // newDate = '07/23/2020';

这是我之前准备的。

  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;
}

解析一个字符串以创建另一个字符串,然后由内置解析器进行解析,这不是一种有效的策略,特别是当两个字符串都不是 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. 日期,原型,到字符串
  2. 日期,原型,到 ISOString
  3. ToUTCString

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