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


73

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

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

您必须将其分开,因为日期和月份可以切换位置。你尝试了什么?
蒂姆·韦尔梅伦

我使用了分割方法并将其分隔为日期,月份,年份
Raja Manickam

嗯,不清楚。“正常日期”是什么意思,一个字符串?“ JavaScript日期格式”是什么意思,是像您发布的字符串还是实际的JavaScript Date对象?
Starscream1984

是的,我也想将正常日期更改为javascript日期对象
Raja Manickam

请告诉我们您到目前为止拥有什么代码。
贾斯珀·肯尼斯

Answers:


163

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.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,该对象表示一个时刻,并且可以进一步转换为任何字符串格式。


2
您应该将正确的类型(数字)传递给构造函数。var dateObject:日期=新日期(+ dateParts [2],+ dateParts [1]-1,+ dateParts [0]);
Daniele Urania

这是给2015年10月23日星期五格林尼治标准时间+0530(IST),如果我们只需要“ 2015年10月23日”不完整的字符串
Pankaj Bhardwaj

4
全世界只有一个国家/地区使用MM / DD / YYYY,它们将默认JavaScript格式设置为什么?很烦人。
Hankrecords

您可以使用正则表达式将日期格式从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';
托马斯阿尔梅达

0

这是一种将具有日期时间的日期字符串转换为日期对象的方法。例如,将“ 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);
    }

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

只有一条线路是足够的,不需要做任何形式的splitjoin等:

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

OP请求DD / MM / YYYY格式,JavaScript中的Date不支持该格式
Aram

他是对的,你可以得到所需的印度格式date.toLocaleString("indian");date.toLocaleDateString("indian");
桑托斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.