2015-11-03 2 views
0

Я пытаюсь преобразовать Dropbox API date format на сегодняшний день. В момент.js,moment.utc не работает в IE и Safari

В настоящее время он не работает в следующем формате.

moment.utc("Sat, 21 Aug 2010 22:31:20 +0000") 

Он делает работу в следующем формат при использовании даты обращенного перед использованием ГРИНВИЧА:

moment.utc(new Date("Sat, 21 Aug 2010 22:31:20 +0000")) 

Однако, я не могу использовать новый метод Date, поскольку он не может быть использован в некоторых других случаях (строка не стандартизирована) - связанный Stackoverflow вопрос.

Один из возможных способов - настроить формат ввода Dropbox, есть ли какой-либо другой метод, позволяющий работать с моментами.utc без использования нового метода Date?

Большое спасибо!

ответ

0
var d = moment.utc("20100821", "YYYYMMDD"); 
var day = d.day(); // 6 
var year = d.year(); // 2010 
var month = d.month(); // 7 
var date = d.date(); // 21 
0

Moments.js выпускает большой жирный Deprecation предупреждение о коде. Суть проблемы заключается в следующем: , если вы не указали явный формат даты, и ваш формат даты не является ISO 8061 lookalike, moment.js отказывается от разбора его и полагается на новую Date() вместо. Что в лучшем случае хрупкое.

Решение простое: вы знаете формат Dropbox использует для возврата вашей даты. Просто укажите его, и ваша проблема решена. Нечто подобное (фактический формат может потребоваться некоторые настройки)

var value = moment.utc("Sat, 21 Aug 2010 22:31:20 +0000", "ddd, d MMM YYYY HH:mm:ss Z"); 
+0

Однако мне также нужен тот же код, чтобы иметь дело с другим форматом даты. Поэтому в моем случае я не могу просто добавить туда Dropbox. –

+0

Я просто попробовал другой способ сделать это. var value = moment ("Sat, 21 Aug 2010 22:31:20 +0000"). utc(); это работает! Что ты думаешь об этом? @ Paul-Jan –

0

В официальной документации по Moment.js, он говорит:

момент (String);

При создании момента из строки мы сначала проверяем, соответствует ли строка известным форматам ISO 8601, а затем возвращаются к новой дате (строке), если неизвестный формат не найден.

Поэтому для того, чтобы идти вокруг нового Date западню, а также применять ISO 8061. Я могу применить moment(), во-первых, а затем применить utc().

moment("Sat, 21 Aug 2010 22:31:20 +0000").utc() 

В этом случае, хотя входная строка не отформатирована как то же самое (но все следуют ISO 8061), они все равно могут быть обработаны безопасно.

Смежные вопросы