Обратите внимание, что руководство fine 1.8.7 не упоминает %z
:
...
%w - Day of the week (Sunday is 0, 0..6)
%x - Preferred representation for the date alone, no time
%X - Preferred representation for the time alone, no date
%y - Year without a century (00..99)
%Y - Year with century
%Z - Time zone name
%% - Literal ``%'' character
, но версия 1.9.3 имеет документированную поддержкудля %z
:
Time zone:
%z - Time zone as hour and minute offset from UTC (e.g. +0900)
%:z - hour and minute offset from UTC with a colon (e.g. +09:00)
%::z - hour, minute and second offset from UTC (e.g. +09:00:00)
%Z - Time zone abbreviation name
Тот факт, что %z
производит что-либо вообще, представляется недокументированной и, возможно, случайной деталью реализации.
Вы можете использовать %Z
в 1.8.7 и 1.9.3;например, вы получите эти результаты в 1.8.7:
>> t = Time.now
=> Mon Dec 19 16:46:06 -0800 2011
>> t.zone
=> "PST"
>> t.strftime('%z %Z')
=> "-0800 PST"
>> t = Time.now.utc
=> Tue Dec 20 00:46:27 UTC 2011
>> t.zone
=> "UTC"
>> t.strftime('%z %Z')
=> "-0800 UTC"
. Это даст вам часовой пояс в формате UTC, PST, EDT и аналогичных общих сокращений.Если вы хотите смещение, вы должны использовать gmt_offset
в обоих 1.9.3 и 1.8.7 :
>> Time.now.gmt_offset
=> -28800
>> Time.now.utc.gmt_offset
=> 0
Обратите внимание, что gmt_offset
даетВы смещение в секундах.