Единственный безопасный способ синтаксического анализа строки даты - сделать это самостоятельно. ES5 определяет стандартную строку для Date.parse, которая основана на ISO8601, но она не поддерживается всеми используемыми браузерами, и ваша строка в любом случае не соответствует этому формату.
Другие строковые значения «работают» для ограниченного набора браузеров, но это не является надежной стратегией для веб-приложения.
Строки даты синтаксического анализа довольно просты: разделите биты, создайте объект даты из частей и при необходимости примените смещение. Так что, если ваша строка пн, 1 апреля 2013 15:46:58 -0500 вы можете использовать такую функцию:
function parseDateString(s) {
var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5,
jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};
s = s.split(/[\s:]/);
var d = new Date(s[3], months[s[2].toLowerCase()], s[1], s[4], s[5], s[6]);
var sign = s[7]<0? 1 : -1;
var l = s[7].length;
// offsetMinutes is minutes to add to time to get UTC
var offsetMinutes = sign * s[7].substring(l-2,l) + sign * s[7].substring(l-4,l-2) * 60;
// Add offset and subtract offset of current timezone
d.setMinutes(d.getMinutes() + offsetMinutes - d.getTimezoneOffset());
return d;
}
var s = 'Mon, 01 Apr 2013 15:46:58 -0500'
alert(s + '\n' + parseDateString(s)); // Mon, 01 Apr 2013 15:46:58 -0500
// Tue Apr 02 2013 06:46:58 GMT+1000
Может быть, это помогает: http://stackoverflow.com/q/1647550/218196. –
Формат определен в [RFC 3339] (http://www.ietf.org/rfc/rfc3339.txt). Он очень популярен среди старых интернет-протоколов. Единственное приятное в этом формате, что вам не нужно использовать регулярное выражение. Количество столбцов фиксировано («01»). – kay