Рельсы датируются с json
Я использую приложение Facebook и использую AJAX/JSON.
Однако возвращенные структуры JSON имеют этот формат 2010-05-30T06:14:00Z
.
Я вызываю Game.all.to_json
в действие контроллера.
Как преобразовать их в обычный формат даты?
Легче ли это сделать со стороны сервера или на стороне клиента, используя fbjs?
Есть много ошибок с fbjs.
Поэтому я бы предпочел использовать решение из Server side
, используя (Active Records
). Как и преобразование данных перед отправкой структур JSON
.
Ответы
Ответ 1
Как я добавил свой собственный пользовательский формат в json, который я возвращал, нужно было добавить патч обезьяны в класс ActiveSupport TimeWithZone.
Добавьте файл в папку config/initializers со следующим содержимым:
class ActiveSupport::TimeWithZone
def as_json(options = {})
strftime('%Y-%m-%d %H:%M:%S')
end
end
Ответ 2
С часовым поясом, работающим во всех основных браузерах и ie7 +:
class ActiveSupport::TimeWithZone
def as_json(options = {})
strftime('%Y/%m/%d %H:%M:%S %z')
end
end
Ответ 3
Если вы хотите сделать это с помощью javascript на стороне клиента, вы можете анализировать отдельные даты примерно так:
prettyDate = function(dateString) {
var day, formatted, jsDate, month;
jsDate = new Date(dateString);
day = jsDate.getMonth() + 1 < 10 ? "0" + (jsDate.getMonth() + 1) : "" + (jsDate.getMonth() + 1);
month = jsDate.getDate() < 10 ? "0" + (jsDate.getDate()) : "" + (jsDate.getDate());
formatted = "" + day + "/" + month + "/" + (jsDate.getFullYear());
return formatted;
};
Вам понадобится дополнительный код, если вам потребуется время форматирования.
Ответ 4
Определенно проще сделать это на стороне сервера. Вы можете сделать regex gsub, чтобы поместить его в желаемый формат, или time.strftime, а затем генерируете json этой строкой.
Ответ 5
Time.parse < datetime >
Simples.
Ответ 6
Вы можете переопределить метод as_json в своей модели как:
class Game
def as_json(options = {})
super.merge(time: time.strftime('%d.%m.%Y %H:%M:%S'))
end
end
Ответ 7
Rails теперь имеет метод .as_json
для объекта DateTime
. Жизнь стала проще.