🐷

Flutter/Dart DateTimeチートシート

3 min read

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. 過去日時を取得する (isBefore)

    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. 日付比較(過去日時か?) (substring)

    var dateTime1 = DateTime(2021, 10, 10);
    var dateTime2 = DateTime(2021, 12, 10);

    print(dateTime1.isAtSameMomentAs(dateTime1)); //true
    print(dateTime1.isAtSameMomentAs(dateTime2)); //false

3.8. 日付比較(同日か?)(isAtSameMomentAs)

    var str = 'Flutter Dart String';
    var str2 = 'Dart String';

    print(str.startsWith('Flutter')); // true
    print(str2.startsWith('Flutter')); // 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に設定しておきます。

https://pub.dev/packages/intl/install
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で用意されているプロパティやメソッドは、公式サイトに纏められています。
是非御覧ください。

https://api.dart.dev/stable/2.10.5/dart-core/DateTime-class.html

Discussion

ログインするとコメントできます