将json结果转换为正确的日期 - javascript

时间:2014-10-30 10:20:17

标签: javascript json

您好我正在尝试将json日期转换回正常的dd / mm / yy日期。

如何将Customer.DateOfBirth dd / mm / yy从json日期转换回正常日期?

这是我的代码?

  // parse the date
                var Birth = Customer.DateOfBirth;
                if (Birth != '') {
                    // get the javascript date object
                    Birth = DateFromString(Birth, 'dd/MM/yyyy');
                    if (Birth == 'Invalid Date') {
                        Birth = null
                    }
                    else {
                        // get a json date
                        Birth = DateToString(Birth);
                        //REPLACE JSON DATE HERE WITH NORMAL DATE??
                    }
                }

任何建议都会很棒。 感谢

2 个答案:

答案 0 :(得分:0)

如果您可以将JSON表示更改为yyyy/mm/dd,则可以使用

直接转换它
Birth = new Date(Birth);

如果必须使用当前格式,则必须进行一些手动解析

提取日/月/年部分并以预期格式创建字符串

var parts = Birth.split('/'),
    day = parts[0],
    month = parts[1],
    year = parts[2],// you need to find a way to add the "19" or "20" at the beginning of this since the year must be full for the parser.
    fixedDate = year + '/' + month + '/' + day; 

Birth = new Date(fixedDate);

答案 1 :(得分:0)

您可以从Date字符串创建mm/dd/yyyy对象,因此,如果您的字符串已订购dd/mm/yyyy,您将收到Invalid Date错误,或者可能更糟糕的是,创建日期错误的日期对象(Januray 10th而不是10月1日)。

因此,在将字符串传递给dd构造函数之前,您需要交换字符串的mmDate部分:

var datestr = Customer.DateOfBirth.replace(/(\d+)\/(\d+)\/(\d+)/,"$2/$1/$3");
Birth = new Date( datestr );

您还可以按yyyy/mm/dd顺序传递字符串:

var datestr = Customer.DateOfBirth.split('/').reverse().join('/');
Birth = new Date( datestr );