Ruby 日時をつくるときの桁あわせ
Date.new
2018年11月9日を作りたい場合。
エラーになる例
require 'date' p Date.new(2018,11,09)
エラー表示
Invalid octal digit p Date.new(2018,11,09) ^~
日にち09の0が余計なので0をとる
一桁月の場合も同様
修正後
require 'date' p Date.new(2018,11,9)
#<Date: 2018-11-09 ((2458432j,0s,0n),+0s,2299161j)>
Time.parse
文字列からTimeオブジェクトの6分6秒57を作りたい場合。
エラーになる例
require 'time' p Time.parse("06:06.57")
エラー表示
mday out of range (ArgumentError)
時間の桁が必要なのでつけ加える
修正後
require 'time' p Time.parse("00:06:06.57")
2018-11-12 00:06:06 +0900
コンマ以下の秒が表示されていないが値は保持されているのでstrftime
で文字列に戻すときは表示できる。
require 'time' goal_time = Time.parse("00:06:06.57") p goal_time p goal_time.strftime("%-M:%S.%2N")
2018-11-12 00:06:06 +0900
"6:06.57"