2021年2月21日日曜日

SharedPreferencesで日時保存と取り出し方

Android開発で、SharedPreferencesを用いて日時を保存して、
取り出す際に日付型で取得する方法のまとめ。

日付を扱うクラスはDate、Calendar、LocalDate、LocalDateTime、LocalTimeがよくあるかな
と思うのでこの辺をまとめてみます。


Dateクラス

    保存

    1. val date = Date() // 保存対象
    2. val format = SimpleDateFormat("yyyyMMddHHmmssSSSS", Locale.getDefault())
    3. sharedPreferences.edit().putString("Date", format.format(date)).apply()

    復元

    1. // Dataがない場合はnullを設定する
    2. val format = SimpleDateFormat("yyyyMMddHHmmssSSSS", Locale.getDefault())
    3. val date = sharedPreferences.getString("Date", null)?.let{ format.parse(it)}


Calendarクラス

いったんDateに変換して保存する感じ

    保存

    1. val calc = Calendar.getInstance() // 保存対象
    2. val format = SimpleDateFormat("yyyyMMddHHmmssSSSS", Locale.getDefault())
    3. val data = calc.time
    4. sharedPreferences.edit().putString("Date", format.format(data)).apply()

    復元

    1. // Dataがない場合はnullを設定する
    2. val format = SimpleDateFormat("yyyyMMddHHmmssSSSS", Locale.getDefault())
    3. val calc = sharedPreferences.getString("Date", null)?.let{format.parse(it)}
    4. ?.let { GregorianCalendar().apply{ time = it }}


LocalDateクラス

※APIlevel26からなので、Android8未満をサポートするなら使用不可

    保存

    1. val date = LocalDate.now() // 保存対象
    2. sharedPreferences.edit().putString("Date", date.toString()).apply()

    復元

    1. // Dataがない場合はnullを設定する
    2. val localdate = sharedPreferences.getString("Date", null)?.let{LocalDate.parse(it)}
    ※LocalDateTime、LocalTimeも同様


ソースコードのまとめ

一応、Java版も含め、ソースコードのみをGitHubに上げておく

0 件のコメント:

コメントを投稿