【Flutter/Dart】DateFormatで日付・日時(DateTime)と文字列を変換

対象者

  • 日時(DateTime)型と文字列(String)型を変換する方法を知りたい人
  • 日時でどのようにフォーマットを作成するか知りたい人

フォーマット

DateFormatのフォーマット

  • yyyy: 4桁の西暦 yy: 西暦の下4桁

  • MM: 2桁の月(ゼロ埋) M:1桁か2桁の月
    mが分(Minutes)と被っているので、大文字。

  • dd: 2桁の日(ゼロ埋) d:1桁か2桁の日

  • hh: 2桁の時(ゼロ埋) h:1桁か2桁の時

  • mm: 2桁の分(ゼロ埋) m:1桁か2桁の分

  • ss: 2桁の秒(ゼロ埋) s:1桁か2桁の秒

(蛇足)時間を指定しないと0時ちょうど、日付を指定しないと「1970年1月1日」で日時が設定される。

方法

DateFormatで日付や日時のフォーマットを指定して、以下を使用する

  • format: DateTImeからStringへの変換
  • parse: StringからDateTimeへの変換

サンプル

import 'package:intl/intl.dart';
final datetime = DateTime(2022, 9, 1, 2, 3, 4);

final formatter1 = DateFormat('yy-M-d h:m:s');
expect(
  formatter1.format(datetime),
  '22-9-1 2:3:4',
);
expect(formatter1.parse('22-9-1 2:3:4'), datetime);

final formatter2 = DateFormat('yyyy-MM-dd hh:mm:ss');
expect(
  formatter2.format(datetime),
  '2022-09-01 02:03:04',
);
expect(formatter2.parse('2022-09-01 02:03:04'), datetime);

final formatter3 = DateFormat('yyyy年M月d日');
expect(
  formatter3.format(datetime),
  '2022年9月1日',
);
expect(formatter3.parse('2022年9月1日'), DateTime(2022, 9, 1));

final formatter4 = DateFormat('h時m分s秒');
expect(
  formatter4.format(datetime),
  '2時3分4秒',
);
expect(formatter4.parse('2時3分4秒'), DateTime(1970, 1, 1, 2, 3, 4));

まとめ

Dartでの文字列と日付の変換方法と、フォーマットの設定方法をまとめました。