如何使用javascript将此Fri Feb 21 2014 00:00:00 GMT-0800 (Pacific Standard Time)
转换为此2014-02-21
?
答案 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
上
答案 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)答案。