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 桁の負数を指定できます) 、、、、、など。
00001995200914292%-Yパッドなし ( 1..2013以降)%C年 / 100 (端数切り捨て、例: 202009 年)%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)