Rubyで日付関係をざっと見ておく
Qitta一色でおもしろくないけど結局一番役に立ってるサイト。基本なんか検索してでてきた情報をトレースしとけばいい。
require "time" require "date" # ruby => TimeClass now1 = Time.new p now1 now2 = Time.new p now2 # specfic t1 = Time.local(2018,5,5) p t1 # can not arg omission t2 = Time.local(12,44,23,22,5,2017,0,0,false, "JST") p t2 t = Time.new p [ t.year, t.month, t.day, t.hour, t.min, t.sec, t.wday, t.zone ] # string convert Time_Object t = Time.parse("2018/04/25 19:23:55") p t t = Time.parse("2017/04/25 19") p t t = Time.parse("2017/6/1 7:5") p t t = Time.parse("2017-8-1 1:2:3") p t t = Time.parse("20170907 122456") p t t = Time.parse("20180907123456") p t t = Time.parse("2017-09-12 12:34:56") p t # string convert Time_Object => strptime(str, form) input_str = "2017年5月5日 10:25" t = Time.strptime(input_str, "%Y年%m月%d日 %H:%M") # Time_Object convert string => strftime("%Y-%m-%d %H:%M:%S") t = Time.new str = t.strftime("%Y-%m-%d %H:%M:%S") puts str # Time_Object Calclation t = Time.new new_t = t + (60 * 60 * 24) p new_t # ruby DateClass d = Date.today p d d = Date.new(2017, 4, 30) p d d = Date.today p [ d.year, d.month, d.day, d.wday ] # string convert Date_Object d = Date.parse("2017/4/25") p d d = Date.parse("2017/5/5") p d d = Date.parse("2018-8-1") p d d = Date.parse("20170907") p d d = Date.parse("2017-9/12") p d # Date_Object convert string today = Date.today str = today.strftime("%Y-%m-%d %H-%M-%S"
だいたいどうでもいい。DateクラスとTimeクラスがある。時間は扱わないのでDateクラスでいいと思う
Rubyでファイル名を連番にする。あるいは日付の連番にする
require "date" Dir.chdir("../") count = 0 puts "extension?: " extension = gets.chomp() files = Dir.glob("*.#{extension}") puts "serial_number or date_serial_number? -- (n / d) -- : " do_pattern = gets.chomp() if do_pattern == "n" files.each do |f| if File.file?(f) count += 1 File.rename(f, count.to_s + "." + extension) end end elsif do_pattern == "d" puts "date? -- ( yyyy-mm-dd ) -- : " date = gets.chomp() files.each do |f| if File.file?(f) File.rename(f, date + "." + extension) date = Date.parse(date) date = date.next_day(1) date = date.strftime("%Y-%m-%d") end end end
きったねえコード。解説なし。みりゃわかんだろこんなクソコード。
pythonとRubyでどうちがうか?
この記事の一個前の記事では python でファイル名を連番にする。もしくは日付の連番にするコードを書いた。
pythonとrubyでそんなにかわりはないが、rubyには便利なメソッドがたくさんある感じがする。しかし end があるおかげでコードが読みにくい。
波括弧をつかうといろいろ省略できるがあえて do end をつかってみた。こういうのって ブロック っていうんだったか・・・?。
雑感
rubyは便利なメソッドがいろいろあるけど、逆にいろいろありすぎてだるい。
今回つかったのは Dateクラス。Fileクラス。Dirクラス。たいしたことはやってないのにほんとにだるい。やっぱ python のほうが好き。
コメント