mam ten DateTime:Jak mogę usunąć strefę z wartości DateTime?
=> Fri, 03 Feb 2012 11:52:42 -0500
Jak mogę usunąć strefę (-0500) w Ruby? Chcę tylko coś takiego:
=> Fri, 03 Feb 2012 11:52:42
mam ten DateTime:Jak mogę usunąć strefę z wartości DateTime?
=> Fri, 03 Feb 2012 11:52:42 -0500
Jak mogę usunąć strefę (-0500) w Ruby? Chcę tylko coś takiego:
=> Fri, 03 Feb 2012 11:52:42
Czas zawsze ma strefę (to nie ma sensu bez niego). Można wybrać, aby go zignorować podczas drukowania za pomocą 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
Zobacz Time#strftime
dla tajemniczych kodów wykorzystywanych do budowy konkretnego formatu.
Alternatywnie możesz chcieć convert your DateTime to UTC dla bardziej ogólnej reprezentacji.
Kiedy wszystko inne zawiedzie
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")
Oprócz przyjętej odpowiedź można również dodać te same strftime
parametry DATE_FORMATS
hash Rails pozwalające na standaryzację formatów wyjściowych w aplikacji.
W config/initializers/datetime_formats.rb
:
Time::DATE_FORMATS[:nozone] = '%a, %d %b %Y %H:%M:%S'
Następnie w kodzie można zrobić:
Time.zone.now.to_s(:nozone)
Można nawet uczynić ją domyślną:
Time::DATE_FORMATS[:default] = '%a, %d %b %Y %H:%M:%S'
Time.zone.now.to_s
Jest też oddzielny hash dla dat:
Date::DATE_FORMATS[:default] = '%a, %d %b %Y'
Ta funkcja działa od lat, ale wydaje się mało znana.
Wcale nie! DateTime (która nie jest taka sama jak Time) przechowuje tylko informacje kalendarza i nie musi wskazywać konkretnego punktu w czasie. Dlatego nieokreślona strefa czasowa ma sens w niektórych przypadkach. Na przykład http://tools.ietf.org/html/rfc5545#section-3.3.5 (formularz nr 1). – skalee
@skalee Wydaje mi się, że możesz pomylić klasę ['Date'] (http://ruby- doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html) z [' DateTime'] (http://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/DateTime.html) klasa. Ta pierwsza zawiera tylko informacje kalendarzowe, ta ostatnia zawiera czas (który musi być powiązany ze strefą czasową). Rozważmy wyjście 'DateTime.new (2016,5,5) .to_s # =>" 2016-05-05T00: 00: 00 + 00: 00 "', gdzie '+00: 00' na końcu wskazuje, że jest północ 00 ** w GMT ** _ (np. Londyn), nie północ w Denver, Kolorado. – Phrogz