【Flutter/Dart】DateTime(日付/日時)をフォーマットする方法!intlでの使い方

この記事からわかること
- Flutter/Dartで日付をフォーマットする方法
- DateTimeを文字列に変換するには?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Koala
- Xcode:16.0
- Flutter:3.29.2
- Dart:3.7.2
- intl: 0.20.2
- Mac M1:Sonoma 14.6.1
DartでDateTime(日付/日時)をフォーマットする方法
DartでDateTime(日付/日時)をフォーマットする方法はいくつかあります。それぞれの特徴やメリット/デメリットについてまとめていきたいと思います。
- toString/toIso8601Stringメソッド
- year、month、dayプロパティ
- intl:DateFormat('yyyy/MM/dd')
toString()/toIso8601String()
1つ目の方法はシンプルに文字列に変換するtoString
メソッドを使用する方法です。DateTime
型をそのままString
型にするとYYYY-MM-dd HH:mm:ss.ms
形式で取得することができます。
DateTime now = DateTime.now();
String dateString = now.toString();
print(dateString); // 2025-03-25 21:40:49.967
toIso8601String
を使用するとISO8601
形式で出力することが可能です。
DateTime now = DateTime.now();
String dateString = now.toIso8601String();
print(dateString); // 2025-03-25T21:41:11.298
year、month、dayプロパティ
2つ目の方法はDateTime
型の持つプロパティを活用した方法です。DateTime
型はyear
やhour
などのプロパティを保持しており、そこから各項目の値を取得することが可能です。
DateTime now = DateTime.now();
String manualDate = '${now.year}/${now.month}/${now.day} ${now.hour}:${now.minute}:${now.second} ${now.millisecond}';
print(manualDate); // 2025/3/25 21:45:32 611
ただここで取得できるのは整数なので01
のようなゼロ埋めはできないので注意が必要です。
intl:DateFormat('yyyy/MM/dd')
3つ目の方法が一番柔軟性と拡張性がある方法で、intl
という数値や日付をフォーマットするためのパッケージを使用します。
導入するためには以下のコマンドを実行します。
$ flutter pub add intl
パッケージの導入が完了したらimport
文を追加すれば使えるようになります。
import 'package:intl/intl.dart';
日付のフォーマットにはDateFormat
を使用します。引数に取得したいフォーマットを指定するだけです。
DateTime now = DateTime.now();
String formattedDate = DateFormat('yyyy/MM/dd HH:mm:ss').format(now);
print(formattedDate); // 2025/03/25 21:50:15
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。