Как удалить зону из значения DateTime? У меня есть это DateTime: => Fri, 03 Feb 2012 11:52:42 -0500 Как удалить зону (-0500) в рубине? Я просто хочу что-то вроде этого: => Fri, 03 Feb 2012 11:52:42 Ответ 1 Время всегда имеет зону (без нее нет значения). Вы можете игнорировать его при печати с помощью DateTime#strftime: now = DateTime.now puts now #=> 2012-02-03T10:01:24-07:00 puts now.strftime('%a, %d %b %Y %H:%M:%S') #=> Fri, 03 Feb 2012 10:01:24 См. Time#strftime для тайных кодов, используемых для построения определенного формата. В качестве альтернативы вы можете преобразовать DateTime в UTC для более общего представления. Ответ 2 В дополнение к принятому ответу вы также можете добавить те же параметры strftime в DATE_FORMATS хеш Rails, позволяющий стандартизировать выходные форматы в вашем приложении. В config/initializers/datetime_formats.rb: Time::DATE_FORMATS[:nozone] = '%a, %d %b %Y %H:%M:%S' Тогда в вашем коде вы могли бы сделать: Time.zone.now.to_s(:nozone) Вы даже можете сделать это по умолчанию: Time::DATE_FORMATS[:default] = '%a, %d %b %Y %H:%M:%S' Time.zone.now.to_s Существует также отдельный хеш для дат: Date::DATE_FORMATS[:default] = '%a, %d %b %Y' Эта функция существует уже много лет, но, похоже, мало известна. Ответ 3 Когда все остальное терпит неудачу zoned_time = Time.now unzoned_time = Time.new(zoned_time.strftime("%Y").to_i,zoned_time.strftime("%m").to_i,zoned_time.strftime("%d").to_i,zoned_time.strftime("%H").to_i,zoned_time.strftime("%M").to_i,zoned_time.strftime("%S").to_i,"+00:00")
Ответ 1 Время всегда имеет зону (без нее нет значения). Вы можете игнорировать его при печати с помощью DateTime#strftime: now = DateTime.now puts now #=> 2012-02-03T10:01:24-07:00 puts now.strftime('%a, %d %b %Y %H:%M:%S') #=> Fri, 03 Feb 2012 10:01:24 См. Time#strftime для тайных кодов, используемых для построения определенного формата. В качестве альтернативы вы можете преобразовать DateTime в UTC для более общего представления.
Ответ 2 В дополнение к принятому ответу вы также можете добавить те же параметры strftime в DATE_FORMATS хеш Rails, позволяющий стандартизировать выходные форматы в вашем приложении. В config/initializers/datetime_formats.rb: Time::DATE_FORMATS[:nozone] = '%a, %d %b %Y %H:%M:%S' Тогда в вашем коде вы могли бы сделать: Time.zone.now.to_s(:nozone) Вы даже можете сделать это по умолчанию: Time::DATE_FORMATS[:default] = '%a, %d %b %Y %H:%M:%S' Time.zone.now.to_s Существует также отдельный хеш для дат: Date::DATE_FORMATS[:default] = '%a, %d %b %Y' Эта функция существует уже много лет, но, похоже, мало известна.
Ответ 3 Когда все остальное терпит неудачу zoned_time = Time.now unzoned_time = Time.new(zoned_time.strftime("%Y").to_i,zoned_time.strftime("%m").to_i,zoned_time.strftime("%d").to_i,zoned_time.strftime("%H").to_i,zoned_time.strftime("%M").to_i,zoned_time.strftime("%S").to_i,"+00:00")