読者です 読者をやめる 読者になる 読者になる

Time#strftimeでタイムゾーンを+0900で表示する

ruby

http://rubyist.g.hatena.ne.jp/muscovyduck/20060601/p1 より。

ひょっとしたら小文字にすれば出来るかも…ということでやってみたら出来ました。

Time.now.strftime "%a, %d %b %Y %H:%M:%S %z"
  #=> "Thu, 01 Jun 2006 18:27:44 +0900"

ただしマニュアルによれば、

rubyが出力するタイムゾーン文字列はOSの実装に依存しています。以下のような文字列を返すOSさえあります。

From: http://www.ruby-lang.org/ja/man/?cmd=view;name=trap%3A%3ATime

とのことで必ずしも確実というわけではないようです。

これの影響を回避しているかどうかは確証ありませんがよく使われる形式の日付を使う場合は標準添付のtime.rbを使うのが手軽で良さそうです。

require 'time'
  #=> true

Time.now.rfc2822
  #=> "Thu, 01 Jun 2006 18:37:00 +0900"

Time.now.rfc822
  #=> "Thu, 01 Jun 2006 18:37:07 +0900"

Time.now.iso8601
  #=> "2006-06-01T18:37:35+09:00"

Time.now.xmlschema
  #=> "2006-06-01T18:37:56+09:00"

Time.now.httpdate
  #=> "Thu, 01 Jun 2006 09:38:12 GMT"

ちなみに同名のクラスメソッドだと文字列をTimeオブジェクトへ変換します。