我有一个格式为dd/MM/yyyy的日期字符串,我想从该字符串创建一个Date对象。 new Date(dd/MM/yyyy)无法正常工作。

我有这段代码,显然不起作用:

function createDateObject(value){
    try{
        return new Date(value.split('/').**swap(0, 1)**.join('/'));
    }
    catch(){
        return null;
    }
}

createDateObject('31/01/2014') => Fri Jan 31 2014 00:00:00 GMT-0200 (Local Daylight Time)

哪个是最简单的方法?

如果我可以在一行中做到这一点,我就不想创建很多临时变量。

最佳答案

由于您的问题是如何在字符串中将月与日交换(dd/mm/yyyymm/dd/yyyy),因此,这就是答案:

var dateString = "25/04/1987";
dateString = dateString.substr(3, 2)+"/"+dateString.substr(0, 2)+"/"+dateString.substr(6, 4);

但是,如果要创建new Date()对象,则必须根据ISO 8601格式(dd/mm/yyyyyyyy-mm-dd)更改字符串:
var dateString = "25/04/1987";
dateString = dateString.substr(6, 4)+"-"+dateString.substr(3, 2)+"-"+dateString.substr(0, 2);
var date = new Date(dateString);

10-07 19:54