【Dart】DateTimeで日付・時刻を操作する方法 まとめ

Dart

Flutter で、日付や時刻を扱うDateTimeクラスで、「現在の時刻を取得する」、「日付を比較する」、「フォーマットする」などの操作方法を紹介します。

現在の日付・時刻を取得する

ローカルの日付・時刻

ローカル(端末)の現在の日付・時刻を取得するには、名前付きコンストラクタ DateTime.now() を使用します。

DateTime now = DateTime.now();

print(now);    // 2023-02-25 15:12:24.839210

協定世界時(UTC)の日付・時刻

協定世界時(UTC)で現在の日付・時刻を取得するには、DateTime.now() を取得したローカルの日付・時刻に対して、toUtc() メソッドを使用します。

DateTime now = DateTime.now();

print(now);            // 2023-02-25 15:12:24.858340
print(now.toUtc());    // 2023-02-25 06:12:24.858340Z

協定世界時で出力した値には、末尾に Z が付いています。

各桁の値を取得する

DateTime のプロパティを使用して、日付・時刻の各桁の値を取得できます。

ateTime now = DateTime.now();

print(now);    // 2023-02-25 15:12:24.839210
print(now.year);           // 2023
print(now.month);          // 2
print(now.day);            // 25
print(now.hour);           // 15
print(now.minute);         // 12
print(now.second);         // 24
print(now.millisecond);    // 839
print(now.microsecond);    // 210

日付・時刻を進める/戻す

進める

日付・時刻を進めるには、add() メソッドを使用します。
どれだけ進めるかは、Duration インスタンスで指定します。
以下のソースコードは、1日進めた例です。

DateTime now = DateTime.now();
DateTime tomorrow = now.add(const Duration(days: 1));

print(now);         // 2023-02-25 15:12:24.859137
print(tomorrow);    // 2023-02-26 15:12:24.859137

戻す

日付・時刻を戻すには、subtract() メソッドを使用します。
どれだけ戻すかは、進めるときと同様に Duration インスタンスで指定します。
以下のソースコードは、1日戻した例です。

DateTime now = DateTime.now();
DateTime yesterday = now.subtract(const Duration(days: 1));

print(now);          // 2023-02-25 15:12:24.859137
print(yesterday);    // 2023-02-24 15:12:24.859137

日付・時刻を比較する

前後関係を確認

isBefore() メソッドや isAfter() メソッドで2つの DateTime の前後関係を確認することができます。

DateTime now = DateTime.now();
DateTime tomorrow = now.add(const Duration(days: 1));
DateTime yesterday = now.subtract(const Duration(days: 1));

print(now.isBefore(tomorrow));    // true
print(now.isAfter(yesterday));    // true

一致しているか確認

compare()メソッドを使用すると、2つの DateTime が一致しているか確認することができます。
一致している場合は、0 を返します。上記の isBefore() メソッドで true となる場合は、-1、isAfter() メソッドで true となる場合は、1 を返します。

DateTime now = DateTime.now();
DateTime tomorrow = now.add(const Duration(days: 1));
DateTime yesterday = now.subtract(const Duration(days: 1));

print(now.compareTo(tomorrow));     // -1 (Before)
print(now.compareTo(now));          // 0  (一致)
print(now.compareTo(yesterday));    // 1  (After)

差分を確認

difference() メソッドを使用することで、2つの DateTime の差分を取得することができます。
結果は、Duration クラスで返ってくるので、inDays プロパティ等を利用して日単位や時間単位で確認することができます。

DateTime beginning21st = DateTime(2000, 1, 1);
DateTime now = DateTime.now();

print(now.difference(beginning21st).inDays);    // 8456

フォーマットする

フォーマットするには、以下の intl パッケージを使用するのが簡単です。今回は、このパッケージを使ったフォーマット方法について紹介します。

まずは、intl パッケージをインストールしましょう。
パッケージのインストール方法は、以下の記事をご参照ください。

intl パッケージをインポートし、フォーマットを指定します。フォーマットを指定後、format() メソッドを使用します。
以下、DateTime をフォーマットするソースコードの例です。

import 'package:intl/intl.dart';

DateTime now = DateTime.now();
final myFormat = DateFormat('yyyy/MM/dd HH:mm');

print(now);                     // 2023-02-25 15:33:44.192709
print(myFormat.format(now));    // 2023/02/25 15:33

まとめ

Flutter(Dart)において、DateTime クラスを使用した日付・時刻の操作方法を紹介しました!

  • 現在日時・時刻の取得
    • ローカルで取得 → DateTime.now() を使用
    • UTCで取得 → toUtc() メソッドで変換
  • 各桁の値の取得
    • DateTime クラスのプロパティを使用
  • 日付・時刻を進める/戻す
    • 進める → add() メソッドを使用
    • 戻す → subtract() メソッドを使用
  • 日付・時刻の比較
    • 前後関係の確認 → isBefore() メソッドまたは isAfter() メソッドを使用
    • 一致の確認 → compareTo() メソッドを使用
    • 差分の確認 → difference() メソッドを使用
  • フォーマット
    • intl パッケージを使用する場合は、
      フォーマットを指定後、format() メソッドを使用

以上で、【Dart】DateTimeで日付・時刻を操作する方法 まとめ は終わりです。

参考

おすすめ書籍

コメント

タイトルとURLをコピーしました