【Kotlin/Android】SimpleDateFormatの使い方!日付を文字列に変換する

【Kotlin/Android】SimpleDateFormatの使い方!日付を文字列に変換する

この記事からわかること

  • Android Studio/Kotlin日付(Date)を文字列変換する方法
  • SimpleDateFormat使い方
  • DateTimeFormatterとの違い

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

SimpleDateFormatの使い方

KotlinのSimpleDateFormatクラスは日付(Date型)を任意の形式の文字列(String型)に変換したり、文字列からDateオブジェクトに変換したりといった日時を操作できるクラスです。SimpleDateFormatクラス自体はJavaで使用されていたクラスでありKotlinでも使用できるようにラップされています。

SimpleDateFormatインスタンスを生成する際に引数にフォーマットパターンを文字列で指定してインスタンス化します。ここで指定したフォーマットパターンに基づいて日時情報を操作できるようになります。

import java.text.SimpleDateFormat

// フォーマットパターンを指定してSimpleDateFormatインスタンスを作成
val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

スレッドセーフではないので注意

SimpleDateFormatクラスはスレッドセーフではないためマルチスレッド環境で使用する際にはアプリクラッシュなどを引き起こす可能性があります。

そのためKotlin CoroutinesRxJava/RxKotlinと使用する際は注意が必要です。

Date型からString型に変換する


@RecentlyNonNull
public final String format(@RecentlyNonNull Date date) {
    throw new RuntimeException("Stub!");
}

SimpleDateFormatを使用してDate型をString型に変換するためにはformatメソッドを使用します。

import java.text.SimpleDateFormat
import java.util.Date

fun main() {
    // 現在の日付を取得
    val date = Date() 

    // フォーマットパターンを指定してSimpleDateFormatインスタンスを作成
    val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

    // 日付を指定したフォーマットに変換
    val formattedDate = dateFormat.format(date)

    println(formattedDate)        // 2024-02-17 00:52:21
    println(formattedDate::class) // class java.lang.String (Kotlin reflection is not available)
}

StringからDate型に変換する


@RecentlyNullable
public Date parse(@RecentlyNonNull String source) throws ParseException {
    throw new RuntimeException("Stub!");
}

SimpleDateFormatを使用してString型をDate型に変換するためにはparseメソッドを使用します。

import java.text.SimpleDateFormat
import java.util.Date

fun main() {
    // 取得したい日付文字列を取得
    val dateString = "2024-02-18"

    // 取得したい日付文字列と同じフォーマットパターンを指定
    val dateFormat = SimpleDateFormat("yyyy-MM-dd")

    val date = dateFormat.parse(dateString)

    println(date)         // Sun Feb 18 00:00:00 UTC 2024
    println(date::class) // class java.util.Date (Kotlin reflection is not available)
}

DateTimeFormatterとの違い

KotlinSimpleDateFormatと同じような役割を持ったクラスにDateTimeFormatterがあります。このクラスも日付オブジェクトをString型に変換したり、その逆も変換することが可能となっています。

SimpleDateFormatとの大きな違いは取り扱える日付オブジェクト型とスレッドセーフか否かです。

- SimpleDateFormat DateTimeFormatter
日付オブジェクト java.util.Date java.time.temporal.
TemporalAccessor※
スレッドセーフ × ⚪︎

TemporalAccessor日付や時刻、オフセット、またはこれらの組み合わせなどの時間オブジェクトへの読み取り専用アクセスを定義するフレームワークレベルのインターフェイスです。

公式リファレンス:TemporalAccessorインターフェース

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index