Подтвердить что ты не робот

Рельсы датируются с json

Я использую приложение Facebook и использую AJAX/JSON.

Однако возвращенные структуры JSON имеют этот формат 2010-05-30T06:14:00Z.

Я вызываю Game.all.to_json в действие контроллера.

Как преобразовать их в обычный формат даты?

Легче ли это сделать со стороны сервера или на стороне клиента, используя fbjs? Есть много ошибок с fbjs.

Поэтому я бы предпочел использовать решение из Server side, используя (Active Records). Как и преобразование данных перед отправкой структур JSON.

4b9b3361

Ответ 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. Жизнь стала проще.