対象者
- 日時(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での文字列と日付の変換方法と、フォーマットの設定方法をまとめました。