目次
はじめに
DatetimeとTimestampを扱う機会が増えたので備忘録としてここに記載します。
DateTime
DateTimeとは
- 時間を表すDartの型
- エポック (1970-01-01 UTC) から最大 100,000,000 日離れた時刻値を表すことができる
DateTimes can represent time values that are at a distance of at most 100,000,000 days from epoch
公式(https://api.flutter.dev/flutter/dart-core/DateTime-class.html)
エポック秒とは、1970年1月1日午前0時0分0秒(UTC)」からの経過秒数で表現する時間の表現方法です。
また、UCTとは協定世界時で日本時間から9時間引いた時間のことです。
私の理解としては、DateTime型とはプログラム的に表現するための時間を表す型の認識です。
使い方
現在を表す
var now = DateTime.now();
print(now); // 2023-08-16 15:21:26.852271
指定時間を表す
var sometimes = DateTime(2023, 5, 5, 50, 50);
print(sometimes); //2023-05-07 02:50:00.000
月だけを取得
var now = DateTime.now();
print('${now.month}月'); // 8月
Timestamp
Timestampとは
- タイムゾーンやカレンダーに依存しない時点を表し、UTC エポック時間のナノ秒の解像度で秒および秒の端数として表されますもの
A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time
公式(https://pub.dev/documentation/cloud_firestore_platform_interface/latest/cloud_firestore_platform_interface/Timestamp-class.html)
- 「1638592424384」のように時間を数字に置き換えたもの
私の理解としては、エポック時間を数字で表したものの認識です。
また、Firebaseで表示される際は2023年8月1日9:30:38 UTC+9 のようで表示されます。
現在を表す
int timestamp = DateTime.now().millisecondsSinceEpoch;
print(timestamp); // 1638592424384
DateTimeからTimestampへ
Firebaseからデータを引っ張ってきたりするときに変換することがあるかと思います。
Timestamp now = Timestamp.fromDate(DateTime.now());
print(now); //Timestamp(seconds=1692168676, nanoseconds=96173000)
TimestampからDateTimeへ
逆も然りでたまに使用することがあると思います。
Map<String, dynamic> map = {'date': Timestamp.now()};
DateTime now = map['date'].toDate();
print(now); //2023-08-16 15:55:51.156492
参考サイト
Flutter/Dart DateTimeチートシート
【Flutter】FirestoreのTimestampとDartのDateTimeの日付とタイムスタンプの相互変換の方法について - Qiita
はじめにやりかた忘れるのでメモしておきます。Timestamp から DateTime への変換Map<String, dynamic> map = ... // firestoreからのドキ…
最後に
まだ深く理解できていない部分があるのでさらに理解を深めて詳細を記載できればと思います。
指摘等あればぜひコメントください。
ではまた。
コメント