Мы используем API Facebook для получения некоторых сообщений и соответствующих им дат и отображения их на созданном нами веб-сайте. API facebook возвращает дату в следующем формате:
2016-05-22T10:38:38+0000
Я определил, что это формат ISO 8601. До недавнего времени мы использовали код, аналогичный следующему, для извлечения удобочитаемой даты в формате мм/дд/гггг:
//created_time = '2016-05-22T10:38:38+0000'
var date = new Date(created_time).toLocaleDateString();
Однако мы заметили, что это не работает в iOS Safari, и все решения включают в себя разбиение строки и ее синтаксический анализ с помощью функции Date().
Я думал, что что-то простое и грязное вроде этого должно работать:
var getDate = function(date) {
var day = date.substr(8, 2);
var month = date.substr(5, 2);
var year = date.substr(0, 4);
return [day, month, year].join('/');
}
Но у моего коллеги есть сомнения по поводу его устойчивости к будущему. Что, если Facebook решит изменить формат, в котором возвращается его дата? Совершенно справедливое беспокойство. Итак, может ли кто-нибудь порекомендовать программный кросс-браузерный метод возврата читаемой даты в формате dd/mm/yyyy из этой строки? Спасибо.
Date.parse
не является явным способом анализа iso 8601 в js? Вы пробовали это? Оговорки вашего коллеги действительны просто на том основании, что весь спектр iso 8601 не охвачен этой функциейgetDate
. - person Crescent Fresh   schedule 06.06.2016