#18 Rubyで学ぶ日付と時刻の扱いの基本
Rubyの日付操作は、標準ライブラリの`Time`や`Date`を使い、直感的な書き方ができます。この記事では、Rubyにおける日付と時刻の基本的な扱い方と、`Time`・`Date`・`DateTime`の使い分けを解説します。
Timeを使う
now = Time.now
puts now
`Time.now`は実行環境のローカル時刻を返します。UTC(協定世界時)で扱いたい場合は`Time.now.utc`を使います。
日付を文字列にする
puts now.strftime("%Y年%m月%d日")
puts now.strftime("%H時%M分%S秒")
この`strftime`という名前と書式は、Pythonの`datetime`とよく似ています。`%Y`は西暦4桁、`%m`は月、`%d`は日を表す書式指定子で、組み合わせて自由な形式の文字列を作れます。
文字列から日付に変換する
逆に文字列を日付として扱いたい場合は、`Date.parse`や`Time.parse`(要`require "time"`)が便利です。
require "date"
d = Date.parse("2026-08-18")
puts d.year
ユーザー入力など形式が保証されていない文字列を扱う場合は、`strptime`で明示的にフォーマットを指定して変換すると、意図しない形式の文字列を誤って解釈してしまう事故を防げます。
日付を計算する
Rubyでは、秒数を表す数値をそのまま足すことで、簡単に日付を計算できます。
three_days_later = now + 3 * 24 * 60 * 60
ただし`Date`型に対しては、加算する数値の単位が「日数」になる点に注意が必要です。
require "date"
today = Date.today
next_week = today + 7
Rubyならではの注意点
Rubyには`Time`のほかに`Date`・`DateTime`というクラスもあり、それぞれ得意な用途が少し異なります。時刻まで必要なら`Time`、日付だけを扱いたいなら`Date`、タイムゾーンを厳密に扱いたい古いコードなら`DateTime`、というように使い分けるとよいでしょう。近年は`Time`と`ActiveSupport`(Ruby on Railsが提供する拡張)の組み合わせで日付操作をすることも多く、Railsプロジェクトではさらに便利なメソッド(`3.days.ago`など)が使えることも覚えておくと役立ちます。
まとめ
Rubyの日付操作は`Time`が基本で、`strftime`での文字列変換、`Date.parse`での文字列からの変換が便利です。用途に応じて`Date`・`DateTime`との使い分けも意識しましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Rubyをもっと学びたい方には「プロを目指す人のためのRuby入門[改訂2版]」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿