Rubyを使用して日付形式をMM/DD/YEARからYEAR-MM-DDに変更するにはどうすればよいですか? データはファイルから読み取られます。
ラリーの標準的な日付形式は 2013-10-20 のようなものです。
Rubyを使用して日付形式をMM/DD/YEARからYEAR-MM-DDに変更するにはどうすればよいですか? データはファイルから読み取られます。
ラリーの標準的な日付形式は 2013-10-20 のようなものです。
require 'Date'
p Date.strptime('10/20/2013','%m/%d/%Y').strftime('%Y-%m-%d') #=> "2013-10-20"
または、Date モジュールを使用したくない場合:
my_string = '10/20/2013'
p my_string.split('/').rotate(2).join('-') #=> "2013-10-20"
strptimeを使用して日付を解析できます。その後、DateTime オブジェクトのメンバーである日、月、および年を使用して日付を出力できます。
d = DateTime.strptime('28/10/2013', '%m/%d/%Y')
puts "{d.year}-#{d.month}-#{d.day}"
編集:実際には、プリントのより良いオプションは、hirolau が提案するようにstrftimeを使用することです。
は日付YYYY-MM-DD
のISO 8601表現であることに注意してください。したがって、その形式では、最も簡単に次のことができます。
require 'date'
puts Date.strptime( '10/20/2013', '%m/%d/%Y' ).iso8601
Date.strptime( '10/20/2013', '%m/%d/%Y' ).to_s
より一般的には、次の方法でフォーマット文字列を指定できますstrftime
。
require 'date'
def convert_date( date_str, in_format='%m/%d/%Y', out_format='%Y-%m-%d' )
Date.strptime(date_str,in_format).strftime(out_format)
end
puts convert_date('10/20/2013')
#=> 2013-10-20
日付形式の形式オプションは次のとおりです。
%Y
世紀を含む-0001
年(少なくとも 4 桁の負数を指定できます) 、、、、、など。
0000
1995
2009
14292
%-Y
パッドなし ( 1
..2013
以降)%C
年 / 100 (端数切り捨て、例: 20
2009 年)%y
年 % 100 ( 00
.. 99
)%m
月、ゼロ埋め ( 01
.. 12
)
%-m
パッドなし ( 1
.. 12
)%_m
空白埋め ( 1
.. 12
)%B
月の完全な名前 ( January
)
%^B
大文字 ( JANUARY
)%b
月の略称(Jan
)
%^b
大文字 ( JAN
)%h
に相当%b
%d
日、ゼロ埋め ( 01
.. 31
)
%-d
パッドなし ( 1
.. 31
)%_d
空白埋め ( 1
.. 31
)%e
空白埋め ( と同じ%_d
)%j
年間通算日 ( 001
.. 366
)%A
完全な曜日名 ( Sunday
)
%^A
大文字 ( SUNDAY
)%a
略称(Sun
)
%^a
大文字 ( SUN
)%u
曜日 (月曜日は 1、1
.. 7
)%w
曜日 (日曜日は 0、0
.. 6
)%U
年の週番号。週は日曜日から始まります。( 00
.. 53
)%W
年の週番号。週は月曜日から始まります。( 00
.. 53
)