
Photo by
mericanadesico
【Dart】【Flutter】DateTime型についてのまとめ
時間に関するDateTime型は、Flutterでのアプリ開発には欠かせないものなので、宣言、よく使うメソッド、パッケージを使った応用についてまとめます。
型宣言
DateTime a;
DateTimeは 年、月、日、時間、分、秒、ミリ秒、マイクロ秒 までの指定することが可能になっています。
今回は、2020年10月2日12時10分を指定します。
DateTime a = DateTime(2020, 10, 2, 12, 10);
now (DateTime)
いまのDateTime情報を取得するメソッドです。
DateTime now = DateTime.now();
year・month・day・hour・minute・millisecond・microsecond (int)
DateTimeの年や月などの情報をそれぞれ取得できるメソッドです。
DateTime a = DateTime(2020, 10, 2, 12, 0);
print(a.year); // 2020
同じように、month や day 等で 月や日の情報を int で取得することができます。
weekday (int)
曜日を確認することができるメソッドです。
1が月曜日、7が日曜日です。
DateTime a = DateTime(2020, 10, 2, 12, 0);
print(a.weekday); // 5(金曜日)
add (DateTime)
時間を指定した期間後、もしくは期間前に変化させるメソッドです。
DateTime a = DateTime(2020, 10, 2);
print(a.add(Duration(days: 1))); // 10/3
print(a.add(Duration(days: -1))); // 10/1
これらを応用すると、今月が何日まであるか確認したりすることができます。
DateTime now = DateTime.now();
print(DateTime(now.year, now.month + 1, 1).add(Duration(days: -1)).day); // 2020年10月は'31日'まである
簡単に解説すると、
・今の情報を取得
・来月の1日が何月何日かわかる
・その日の1日前の情報を取得
・その日の day は今月の最終日
といった流れです。
difference (Duration)
2つのDateTimeの期間の差を取得するメソッドです。
DateTime a = DateTime(2020, 10, 3, 0, 0);
DateTime b = DateTime(2020, 10, 3, 12, 0);
print(a.difference(b).inHours); // -12
b から見て a はどのくらい期間の差があるか、未来の場合はプラス、過去の場合はマイナスで取得されます。
今回の場合は、b から見て a は12時間前の過去なのでその inHours をとると -12 となります。
DateTime型からString型に変換する
pubspec.yaml を編集して、『intl』パッケージを取得します。
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.3
intl: ^0.16.1 #この行を追加
DateTime型のままでは、アプリ内に表示ができないので、『****年**月**日』の形に変換します。
DateTime a = DateTime(2020, 10, 2, 0, 0);
print(DateFormat('yyyy年M月d日').format(a)); // 2020年10月2日