0

Rubyを使用して日付形式をMM/DD/YEARからYEAR-MM-DDに変更するにはどうすればよいですか? データはファイルから読み取られます。

ラリーの標準的な日付形式は 2013-10-20 のようなものです。

4

3 に答える 3

3
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"
于 2013-10-28T14:51:56.683 に答える
1

strptimeを使用して日付を解析できます。その後、DateTime オブジェクトのメンバーである日、月、および年を使用して日付を出力できます。

d = DateTime.strptime('28/10/2013', '%m/%d/%Y')
puts "{d.year}-#{d.month}-#{d.day}"

編集:実際には、プリントのより良いオプションは、hirolau が提案するようにstrftimeを使用することです。

于 2013-10-28T14:45:18.523 に答える
0

は日付YYYY-MM-DDISO 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)
于 2013-10-28T14:54:08.817 に答える