🐷
Flutter/Dart DateTimeチートシート
DateTimeチートシート
DateTime型の便利なプロパティやメソッドをまとめました。
1. はじめに
開発環境は、下記のとおりです。
カテゴリ | Ver. |
---|---|
Flutter | 2.2.0 |
Dart | 2.13.0 |
2. チートシート
よく使いそうなプロパティやメソッドをご紹介します。
カテゴリ | プロパティ/メソッド名 |
---|---|
現在の日時を取得する | now |
指定日時を取得する | DateTime |
年、月、日、曜日、時、分を取得する | year / month / day / weekdayなど |
未来日時を取得する | add |
過去日時を取得する | subtract |
日付比較(未来日時か?) | isAfter |
日付比較(過去日時か?) | isBefore |
日付比較(同日か?) | isAtSameMomentAs |
日付の差分を取得する | difference |
【番外】日付フォーマット | DateFormat(intl) |
3.使い方
3.1. 現在の日時を取得する (now)
var now = DateTime.now();
print(now); // 2021-06-22 12:15:36.030889
3.2. 指定日時を取得する (DateTime)
var now = DateTime(2021, 10, 10, 12, 12);
print(now); //2021-10-10 12:12:00.000
3.3. 年、月、日、曜日、時、分を取得する (year / month / day / weekdayなど)
var now = DateTime.now();
print(
'${now.year}/${now.month}/${now.day}(${now.weekday}) ${now.hour}:${now.minute}'); //2021/6/22(2) 12:20
3.4. 未来日時を取得する(add)
var now = DateTime.now();
var addDateTime = now.add(Duration(days: 1));
print('$now -> $addDateTime'); //2021-06-22 12:23:10.898158 -> 2021-06-23 12:23:10.898158
3.5. 過去日時を取得する (subtract)
var now = DateTime.now();
var subDateTime = now.subtract(Duration(days: 1));
print('$now -> $subDateTime');
3.6. 日付比較(未来日時か?) (isAfter)
var dateTime1 = DateTime(2021, 10, 10);
var dateTime2 = DateTime(2021, 12, 10);
print(dateTime1.isAfter(dateTime2)); // false
3.7. 日付比較(過去日時か?) (isBefore)
var dateTime1 = DateTime(2021, 10, 10);
var dateTime2 = DateTime(2021, 12, 10);
print(dateTime1.isBefore(dateTime2)); // true
3.8. 日付比較(同日か?)(isAtSameMomentAs)
var str = 'Flutter Dart String';
var str2 = 'Dart String';
print(dateTime1.isAtSameMomentAs(dateTime1)); //true
print(dateTime1.isAtSameMomentAs(dateTime2)); //false
3.9. 日付の差分を取得する(difference)
var dateTime1 = DateTime(2021, 10, 10, 10, 10);
var dateTime2 = DateTime(2021, 12, 12, 12, 12);
print(dateTime2.difference(dateTime1)); //1514:02:00.000000
print(dateTime2.difference(dateTime1).inDays); //63
print(dateTime2.difference(dateTime1).inHours); //1514
print(dateTime2.difference(dateTime1).inSeconds); //5450520
3.10. 【番外】日付フォーマット(DateFormat)
日付のフォーマットには、intlパッケージを利用する必要があるようです。
下記のパッケージをpubspec.yamlに設定しておきます。
import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';
await initializeDateFormatting('ja_JP');
var now = DateTime.now();
print(DateFormat('yyyy-MM-dd(E) hh:mm').format(now)); // 2021-06-22(Tue) 11:59
print(DateFormat.yMMMMEEEEd('ja').format(now)); //2021年6月22日火曜日
3.11. おまけ
曜日や月の定数も用意されているようです。
//曜日の定数
var weekDays = [
DateTime.monday,
DateTime.tuesday,
DateTime.wednesday,
DateTime.thursday,
DateTime.friday,
DateTime.saturday,
DateTime.sunday,
];
print(DateTime.now().weekday); //2
print(weekDays); //[1, 2, 3, 4, 5, 6, 7]
4. 公式ドキュメント
もっと知りたい方は、Dartで用意されているプロパティやメソッドは、公式サイトに纏められています。
是非御覧ください。
Discussion
素敵なチートシートありがとうございます!
isBeforeのコード例の代わりにsubtractになっており、3.7と3.8のタイトルとは別のコード例になってますね🙇♀️
@miyaken12
コメントありがとうございます。
修正しました。
3.3での曜日の取得について、そこから数字を取り出して〇曜日という風に表示させることは可能でしょうか?