どうも、tatsuです!
今回は、Androidアプリ開発で日付を扱いたい場合の方法を解説していきます。
目次
データベースで日付を扱う方法
まず、Androidアプリ開発におけるデータベース(SQLite)を使う場合、Date型というのが存在しません。
なので、データベースにはINTEGER型で登録し、表示時に人が理解できる文字列に変換してあげる必要があります。
そこで、簡単に日付変換を扱えるメソッドをまとめたファイルの作成と、それを使って実際に登録&表示する方法を見ていきましょう!
DateConverter.kt
それではMainActivity.ktと同じ階層にDateConverter.ktというファイルを作成してください。(クラスではなくただのファイルでOKです)
中身は以下のようにします。
import java.text.SimpleDateFormat import java.util.* /** * 現在日時をLong型で取得する * 日付をデータベースで管理する場合は、この関数の返り値をINTEGER型のカラムに格納すればOK */ fun getCurrentDate() : Long{ return System.currentTimeMillis() } /** * Long型の日付を引数にとって日付文字列を返す * データベースから取得した値を「yyyy/MM/dd HH:mm:ss」の形の文字列として扱うことができる */ fun convertLongToString(dateLong : Long) : String{ val date = Date(dateLong) val simpleDateFormat = SimpleDateFormat("yyyy/MM/dd HH:mm:ss") return simpleDateFormat.format(date) }
DateConverter.ktの使い方
対象のテーブルには日付を格納するためのINTEGER型のカラムが用意されていることが前提です。
今回そのカラムはcreate_dateという名前と仮定します。
データベースに日付を保存する
// 現在日時をLong型で取得 val currentDateLong = getCurrentDate() // SQL文字列生成 val sql = "INSERT INTO ○○_TABLE(title, create_date) VALUES( 'test', $currentDateLong )" // sqlを実行する db.execSQL(sql)
データベースから取得したINTEGER型の日付を文字列に変換する
// データベースからINGETER型の日付を取得 val dateLong = ..... // INTEGER型からyyyy/MM/dd HH:mm:ssの形の文字列に変換する val dateString = convertLongToString(dateLong)
まとめ
「登録日時や更新日時でソートしたい」ことって結構多いかと思います。
また、登録日時は大概のテーブルにはとりあえず入っていることが多いです。笑
いれておいて損はないので、この記事を参考に日時を管理してみてください。
それでは!
コメントを残す