Title Image

Modified : 2023/10/08

Calendarクラスの日時を日時文字列に変換

Calendarクラスの日時をタイムゾーンを考慮した日時文字列に変換する方法を紹介します。
[Kotlin]に戻る

[記事の先頭]

概要

 JDK1.8やAndroid API 26から日時を扱うクラスが新しく使えるようになりましたが、 Android API 26 以前にも対応させたい場合など、まだCalendarクラスを使うことが多いと思います。

 SimpleDataFormatを使用して日時文字列への変換を行いますが、 ポイントはSimpleDataインスタンスにCalendarインスタンスのタイムゾーンを設定することです。

[記事の先頭]

標準CalendarクラスにtoString()を追加する例

CalendarExp.kt ファイル

import java.text.SimpleDateFormat
import java.util.*

fun Calendar.toString(pattern: String): String {
    val format = SimpleDateFormat(pattern)
    format.timeZone = timeZone
    return format.format(time)
}
[記事の先頭]

使い方の例

システムのタイムゾーンを使う場合

val calendar = Calendar.getInstance()
val text = calendar.toString("yyyy/MM/dd HH:mm:ss.SSS")
println("$text (${calendar.timeZone.displayName})")
// => 2022/01/23 12:34:56.789 (日本標準時)

グリニッジ標準時のタイムゾーンを使う場合

val calendar = Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("Europe/London")))
val text = calendar.toString("yyyy/MM/dd HH:mm:ss.SSS")
println("$text (${calendar.timeZone.displayName})")
// => 2022/01/23 03:34:56.789 (グリニッジ標準時)
[記事の先頭]

関連記事

[記事の先頭]
[Kotlin]に戻る