Dartで日付を文字列にするにはintlパッケージを使うことでいろいろな書式で文字列に変換することができます。
目次
intlパッケージをインストールして使う準備をする
intlパッケージはSDKに含まれていないので、dartコマンドでインストールします。
VSCodeを使用している場合はCtrl+@でターミナルを起動できます。
ターミナル上でpubコマンドを使ってパッケージを追加します。
dart pub add intl
パッケージを追加したらプロジェクトのpubspec.yamlファイルに次の設定を追加が追加されています。
dependencies:
intl: ^0.17.0
これで準備は完了。
書式を簡易的に指定する
ログ等に日時を出力する場合は、一定の書式であれば日本語で出力する必要はありません。
しかし月日をゼロ埋めして桁を揃えたい場合は、システムのロケールなど気にせずintlパッケージを使いましょう。
STEP
パッケージのインポート
intlパッケージを使うためにimportします。
import 'package:intl/intl.dart';
STEP
書式を指定
DateFomartクラスに書式を指定して文字列に変換できます。
print(DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()));
上のソースを実行すると次のような出力が得られます。
2022-02-01 01:00:00.000
ロケールを指定(日本語で日付を表示)
日本語で日時の文字列を取得する場合は、ロケールを設定する必要があります。
STEP
パッケージのインポート
intlパッケージを使うためにimportします。
また、日付を日本語化するにはdate_system_date_local.dartもインポートする必要があります。
import 'package:intl/intl.dart';
import 'package:intl/date_symbol_data_local.dart';
STEP
ロケールの設定
日付を日本語化するにはロケールの設定をする必要があります。
これはプロジェクト内で一度だけ呼び出します。
initializeDateFormatting('ja_JP'); // ロケールの設定(プロジェクト内で一度だけ呼び出せばよい)
STEP
書式を指定
DateFomartクラスに書式を指定して文字列に変換できます。
print('yMMMEd is ' + DateFormat('yMMMEd', 'ja').format(now));
print('HH:mm:ss.SSS is ' + DateFormat('HH:mm:ss.SSS', 'ja_JP').format(now));
上のソースを実行すると次のような出力が得られます。
yMMMEd is 2022年2月1日(火)
HH:mm:ss.SSS is 01:00:00.000
コメント