Kotlin

【Kotlin】タイムスタンプからRFC3339 UTC「Zulu」形式の日付フォーマット作成

GooglePlayBilling でサブスクリプションの情報を取得する API のバージョンが変わりました。

これについては、以前紹介した通りです。

【GooglePlayBilling】purchases.subscriptionsv2のAPIとv1の互換性前回、BillingLibrary5 の登場によって定期購入アイテムの管理が大きく変わった話をしました。 これに伴い、サブスクのマ...

ここで気になったのが日時の表記。

「RFC3339 UTC “Zulu” format」というのが気になりますね。

今回は、この日付のフォーマット作成やエポックミリ秒への変換を試していきます。

日付フォーマットの仕様

GooglePlayBilling の API の仕様を確認すると、以下の説明が記載されています。

A timestamp in RFC3339 UTC “Zulu” format, with nanosecond resolution and up to nine fractional digits. Examples: “2014-10-02T15:01:23Z” and “2014-10-02T15:01:23.045123456Z”.

これまで通りエポックミリ秒でもいいのですが、レスポンスの中身を見ただけで日時がわかるというメリットはあります。

エポックミリ秒だと、日付フォーマットに変換しないとわからないですからね。

エポックミリ秒を日時に変換(逆変換)するツールエポックミリ秒(UNIX エポックからの経過ミリ秒数)と「日時」の相互変換の機能を提供します。 「エポックミリ秒」または「日時」を...

現在日時のZuluフォーマット

Kotlin で実際に現在日時を Zulu フォーマット表記で表示させてみましょう。

このソースコードを実行したのが 2022 年 11 月 16 日の 19 時台ということで、結果は以下の通り。

2022-11-16T10:08:20.669Z

Zuluフォーマットからエポックミリ秒への変換

では、GooglePlayBilling からレスポンスされた日付項目を、エポックミリ秒に変換する方法を考えてみます。

ここでは上記で使用した現在日時をサンプルとします。

結果は以下の通りです。

1668593300669

まとめ

RFC3339 UTC 「Zulu」 形式の日付フォーマットの変換について紹介してきました。

相互変換ができるようにしておけば、日付の扱いで困ることもありませんね。

自分のシステムだけであれば日付フォーマットは統一しておけますが、外部システムが絡むと厄介。

これが正解かと言われると未知数なので、Java の新しい日付クラスの情報も追いかけておきたいところです。