Flutter:DateTimeクラスで日時情報を取得する方法

Flutter
スポンサーリンク

はじめに

最近アプリ開発の仕事をしていて、日付を取得し任意の1週間をリスト表示するということをしました。

日時情報はDateTimeクラスを用いることで簡単に取得し扱えるので今回はその辺のところを簡単にまとめたいと思います。

 

日付を取得したいということは結構頻繁にあるかと思いますし、今度紹介するかもしれませんがカレンダーを簡単に実装できるパッケージがあってもちろんそこでもDateTimeクラスが用いられています。

DateTimeクラスはプロパティ・メソッドがすごくわかりやすくできているのでクラスについてまだ少しわからないという方でもいい練習になると思います。

 

DateTimeクラス

DateTimeクラスは日時情報を簡単に扱うことができるクラスで、年・月・日・曜日などの情報がプロパティとして、その日から何日前(後)の情報を取得するようなメソッドとして用意されています。

ここではよく使うであろうプロパティとメソッドを紹介します。

 

また任意の日時でこのようなプロパティやメソッドを使いたい場合はDateTimeクラスのインスタンスが必要になるのでコンストラクタや.parseメソッドの使い方も紹介します。

 

コンストラクタ

DateTime

()の中に任意の日時情報を入れることでその日時のDateTimeインスタンスを生成できます。

()内に入れる順番は 年、月、日、時間、分、秒、ミリ秒、マイクロ秒 で全てint型で入力します。

また全て入力する必要はありません。例えば分まで入力してあとは入力しない場合入力しなかった秒以下は全て0としてインスタンス化されます。

 

DateTime.now

このコンストラクタを用いると現在の日時情報を取得できます。()内には何も入れなくて大丈夫です。

このコンストラクタを使うことでストップウォッチの10秒チャレンジアプリなんか簡単に作れそうですね。

 

parse

これは厳密にはコンストラクタではなくメソッドですがDateTimeコンストラクタと同じように任意の日時情報でDateTimeインスタンスを生成することができます。

ただDateTimeコンストラクタとは違い()内にはint型ではなくString型を入力します。

例えば

“2019-05-06”

“2019-05-06 20:30:00”

“20190506”

“20190506 20:30:00”

さらに詳しく知りたい方は公式のドキュメント(DateTimeクラス)の.parseメソッドの項目を見てください。

 

例)

 

プロパティ

ここで示すプロパティは全てint型です。

  • year          :年を扱います
  • month       :月を扱います
  • day           :日を扱います
  • weekday   :曜日を扱います
  • hour         :時間を扱います
  • minute      :分を扱います
  • second     :秒を扱います

 

曜日をint型で扱うってどういうこと?となるかもしれませんが簡単です。

1 -> 月曜日

2 -> 火曜日

3 -> 水曜日

4 -> 木曜日

…となります。

 

またDateTimeクラスでは月と曜日が定数で定義されているので

DateTime.monday -> 1

DateTime.april -> 4

と指定することもできます。

 

メソッド

add

addメソッドは期間を指定しインスタンスの日時からその期間先に進んだ日時情報を取得できます。

期間はDurationクラスで指定します。

例えばインスタンスの1週間先の日時情報を取得するときはDurationで7日間指定すれば良いということです。

例)

 

subtract

addメソッドの逆でDurationで指定した期間戻った日時情報を取得できます。

例)

 

isBefore

メソッドを使うDateTimeインスタンスの日時が引数で指定したインスタンスの日時より前かどうかを判別し、前ならtrueを返します。

例)

 

isAfter

isBeforeメソッドの逆です。

例)

 

compareTo

isBefore、isAfterメソッドと同じようにして使いますが、帰ってくる値はint型です。

メソッドを使うDateTimeインスタンスの日時が引数で指定したインスタンスの日時と同じかそれより前か後かどうかを判別し、

同じなら -> 0

前なら -> 負の整数

後なら -> 正の整数

を返します。

例)

 

isAtSameMomentAs

2つのDateTimeインスタンスが同じ日時情報を持つかどうかを判別し真偽値で返します。

例)

 

difference

2つのDateTimeインスタンスの日時の差をDuration、期間として返します。

例)

 

サンプルコード

サンプルとして今週1週間をリスト表示するようなアプリを作って見ます。

 

最後に

日付などのデータを扱う上でDateTimeクラスは必須になってくると思います。

また、ほとんどのアプリでは日付を扱うことになると思うのでDateTimeクラスの基本的な使い方と存在を知っていることは非常に重要なので押さえておきましょう。

 

コメント