如何将此日期类型转换为普通日期类型? JavaScript的

时间:2014-02-14 23:20:47

标签: javascript jquery

如何使用javascript将此Fri Feb 21 2014 00:00:00 GMT-0800 (Pacific Standard Time)转换为此2014-02-21

4 个答案:

答案 0 :(得分:2)

您可以将字符串分解为其部分,然后将这些位格式化为您需要的内容:

// Reformat string like: Fri Feb 21 2014 00:00:00 GMT-0800 (Pacific Standard Time)
// do yyyy-mm-dd
function reformatDateString(s) {
    function z(n){return (n<10?'0':'') + n;}
    var months = {jan:'01', feb:'02', mar:'03', apr:'04', may:'05', jun:'06',
                  jul:'07', aug:'08', sep:'09', oct:'10', nov:'11', dec:'12'};
    s = s.split(/[ :]/g);
    return s[3] + '-' + months[s[1].toLowerCase()] + '-' + z(s[2]);
}

您可以使用Date构造函数,但这里没有必要。使用构造函数来解析字符串是有问题的,因为OP中的字符串不符合ES5中指定的格式(所有正在使用的浏览器都不支持),而解析则依赖于实现。

因此,要使用Date,无论如何都需要解析部分,从而导致许多额外的函数调用。

答案 1 :(得分:2)

使用标准字符串/数组操作

var timeStamp = 'Fri Feb 21 2014 00:00:00 GMT-0800 (Pacific Standard Time)',
    months = {
        Jan: 1,
        Feb: 2,
        Mar: 3,
        Apr: 4,
        May: 5,
        Jun: 6,
        Jul: 7,
        Aug: 8,
        Sep: 9,
        Oct: 10,
        Nov: 11,
        Dec: 12
    },
    parts = timeStamp.split(' ', 4).slice(1),
    myStamp;

function pad(val) {
    if (val < 10) {
        val = '0' + val;
    }

    return val;
}

parts[0] = months[parts[0]];
parts.unshift(parts.pop());
parts[1] = pad(parts[1]);
parts[2] = pad(parts[2]);
mystamp = parts.join('-');
console.log(mystamp);

输出

2014-02-21

jsFiddle

答案 2 :(得分:1)

日期Fri Feb 21 2014 00:00:00 GMT-0800采用标准RFC 2822格式,因此您可以使用new Date()将其作为参数传递来创建新日期。这将把它转换成UTC(自1970年1月1日以来的毫秒),你可以操作它。

然后,您可以使用2014-02-21T00:00:00.000Z方法将UTC转换为ISO 8601扩展格式(toISOString())并获取T之前的文字:

var utcDate = new Date('Fri Feb 21 2014 00:00:00 GMT-0800');
var isoExtendedDate = utcDate.toISOString();   
var isoSimpleDate = isoExtendedDate.split("T")[0];

答案 3 :(得分:0)

我无法删除这个,因为OP选择它作为答案(OP请选择Xotic750)答案。

See Xotic750's answer