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 のほうが好き。

コメント