Отформатируйте строку даты ISO 8601 до 0:00 с помощью javascript

У меня есть следующая строка даты ISO 8601:

var isoDate = 2013-10-01T09:00:00.000-04:00;

При попытке отформатировать дату с помощью функции Date() часовой пояс даты меняется на мой местный часовой пояс (обратите внимание, что это 08:00 вместо 09:00)

Date.fromISOString(isoDate);  /* Returns: Tue Oct 01 2013 08:00:00 GMT-0500 (Central Standard Time)*/

Я хочу полностью сохранить исходный часовой пояс текущей строки.

Если в строке есть 09:00, я хочу вывести 9PM.

Каков наиболее традиционный способ сделать это?

ПРИМЕЧАНИЕ. Я также безуспешно пытался использовать datejs. Попытка выполнить следующее вернула пустой результат:

Date.parse('2013-10-01T09:00:00.000-04:00')

person Axel    schedule 24.10.2013    source источник


Ответы (1)


Используйте оператор new, конструктор Date, метод toISOString и несколько подстановок строк, чтобы сохранить исходную строку:

var foo = "2013-10-01T09:00:00.000-04:00";
var bar = foo.substr(-6);
var baz = foo.substr(11,2)
var isoDate = new Date(foo).toISOString().replace("Z",bar).replace(/T../,"T"+baz);
var hours = String(baz).concat(Number(baz) < 12 ? "PM" : "AM").replace(/^0/,"")

Ссылки

person Paul Sweatte    schedule 13.02.2014