コピペで再利用できるように
環境
- Android Studio
- java SE7
本来、JavaレベルではJava SE8に追加されたtime APIが使えるのだが、Android上で使えるのAPIレベル26以上、つまりOreo以降になる。(誰もいないw
ので今回はベーシックなSimpleDateFormatを使う SimpleDateFormatの仕様はこちら
現在時刻を取得して文字列に変換
val df = SimpleDateFormat("yyyy年MM月dd日 HH:mm") val message = df.format(Date()) Toast.makeText(this@MainActivity, message , Toast.LENGTH_SHORT).show()
文字列の日付をDate型に変換して文字列で表示
よくあるISO 8601形式をパースする
val date_str = "2018-06-16T13:00:00+09:00" val df = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX") val dt = df.parse(date_str) val df2 = SimpleDateFormat("MM/dd") val message = df2.format(dt) Toast.makeText(this@MainActivity, message , Toast.LENGTH_SHORT).show()
例外キャッチする場合
val date_str = "2018-06-16T13:00:00+09:00" val df = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX") val dt = try { df.parse(date_str) } catch (t: Throwable) { null } if (dt != null) { val df2 = SimpleDateFormat("MM/dd") val message = df2.format(dt) Toast.makeText(this@MainActivity, message , Toast.LENGTH_SHORT).show() } else { val message = "date is invalid" Toast.makeText(this@MainActivity, message , Toast.LENGTH_SHORT).show() }