Pythonにおける日付型(Date)を理解する

Pythonにおける日付型(Date)を理解する
公開
多くのプログラミング言語に共通する日付型(date型)ですが、Pythonにおいては同機能の型をdatetimeクラスとして提供されています。今回は、Pythonで日付を扱えるよう、datetimeクラスの解説をしていきます。

多くのプログラミング言語には日付を扱うためのdateクラスが用意されています。Pythonでもそれは同様です。しかし、その扱い方にはdatetimeモジュールを利用することなど、他とは少々異なる方法が用いられます。
今回は、Pythonにおける日付型を実際のコードと共に解説していきます。

日付型(date)とは

単なる数値や文字列とは異なり、日付の管理は単純なようでいて難しく、考慮すべき事項が多く存在します。
うるう年や、ひと月ごとの日数、曜日などの管理は、単なる数字のみで自分で正確に算出するとなると、多くの工数がかかってしまうものです。
この日付という概念をプログラミング上で簡単かつ正確に扱えるよう用意されているのが、dateクラスです。

プログラミング言語全般におけるdate型

dateクラスは大半のプログラミング言語に用意されています。
日付という概念はプログラミングでものづくりを行う際にも度々登場する概念であるため、dateクラスはどういったプログラミング言語であっても、欠かせない存在なのです。
プログラマの開発の現場においても、日付に関わる実装は頻繁に求められるため、dateクラスに習熟することは活躍できるプログラマ・エンジニアになるための第一歩と言えるでしょう。

Pythonにおける日付型(datetime, date, time)

さて、ここまで日付型のことをdateクラスと称してきましたが、Pythonにおいてはこの表現は正確ではありません。
Pythonでは、日付に関わるクラスやメソッドはdatetimeモジュールとして提供されています。
このdatetimeモジュールをインポートすることで、datetimeクラスをPythonで扱えます。datetimeクラスはdateクラスとTimeクラスのふたつを足し合わせたクラスであり、これらはそれぞれ日本語では日付型と時間型と称されています。
(ややこしい話ですが、多くのプログラミング言語で一般的に表現される日付型(date)とは、Pythonにおける日付型(date)と時間型(Time)を足し合わせたdatetime型と同義です。)

Pythonで現在の日時を求める方法

Pythonにおける日付や時間を扱うクラスdatetimeクラスはdatetimeモジュールとして提供されています。このdatetimeモジュールは次のコードでインポートすることができます。

import datetime

import + モジュール名で、指定したモジュールをインポートすることができます。

また、次のコードで指定したモジュールの、指定したクラスを取得することが可能です

from datetime import datetime

importのみのコードがモジュールを指定するだけであるのに対し、from ~ import ~ 文では、モジュール内のどのクラスをインポートするかということまで指定できるのです。
構文としてはfrom + モジュール名 import + クラス名となります。

import detetimeで利用可能となったdatetimeモジュールを用いて現在の日付や時間を取得するためのコードを以下で解説していきます。
ですのでfrom datetime import datetimeが示すのはdatetimeモジュールのdatetimeクラスをインポートする、という意味です。

datetime.now()でdatetimeオブジェクトを作成する

datetimeオブジェクトの作成は、以下のように行います。

from datetime import datetime
datetime.now()  # now()によりdatetimeオブジェクトが作成される

上記コードのnow()メソッドによって、datetimeオブジェクトを作成されています。ここで作成されるdatetimeオブジェクトは現在のローカルな日付・時間を示すものとなっています。

また、メソッドの細かな挙動は異なりますが、同様にdatetimeオブジェクトを作成するメソッドとしてtoday()メソッドというメソッドも用意されています。today()メソッドもnow()メソッドと同様に、datetimeクラスが保持するメソッドです。

datetime.date() でdateオブジェクトを作成する

datetimeオブジェクトは日付型(date)と時間型(time)が足しあわされたものです。datetimeオブジェクトからこのうちの日付型(date)のクラスのみを作成したい場合のメソッドが、datetimeクラスには用意されています。

from datetime import datetime
datetime.now().date()  # date()によりdateオブジェクトが作成される

date()メソッドを用いれば、このように、datetimeオブジェクトからdateオブジェクトを作成することが可能です。dateオブジェクトは日付のみを管理するクラスのインスタンスであるため、時間に関わる情報については管理しないようになっています。

date.today()で今日の日付を取得する

datetime.now()の解説の最後で登場したdatetimeクラスのメソッドtoday()ですが、datetimeクラスではなくdateクラスにも同様のメソッドが用意されています。

from datetime import datetime, date
date.today() # yyyy-MM-dd形式の値を取得
datetime.today() # yyyy-MM-dd hh:mm:ss.ssssss形式の値を取得

これらは同名のメソッドではありますが、メソッドが返却する値については少々違いがあります。
dateクラスのtoday()メソッドはyyyy-MM-dd形式で日付を取得するのみですが、datetimeクラスのtoday()メソッドはyyyy-MM-dd hh:mm:ss.ssssss形式で日付 + 時間を取得します。状況に応じて使い分けることが大切と言えるでしょう。

まとめ

Pythonにおける日付型datetimeクラスを利用すれば、日付に関わる操作を簡単に行うことができます。また、datetimeクラスからdateクラスを取得することで、取得する情報を日付 + 時間から日付のみに絞ることも可能となります。

状況に応じたクラスの使い分けを行いながら、日付に関わる適切なコーディングを行いましょう。

この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。


フォロワー19,548人
TECH PLAYでは、ITに関わる様々なイベント・勉強会・講演会・交流会・カンファレンス・セミナーなどの情報を集約し掲載しています。

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす