Posted at

【Android】任意の時刻が現在時刻から何秒前、何分前、何時間前、何日前かを計算する関数

More than 1 year has passed since last update.

SNSとかでよくある何秒前、何分前、何時間前、何日前の投稿かが分かるUIを実現したかったため作りました。


やりたいこと

↓コレ(赤枠のところ)

Screen Shot 2018-01-03 at 5.17.56 PM.png


環境

Kotlin: 1.2.10


サンプルコード

fun foo(time: Long): String {

val diff = System.currentTimeMillis() - time

val sec = diff / 1000L

val min = sec / 60L
if (min == 0L) {
return "${sec}s"
}

val hour = min / 60L
if (hour == 0L) {
return "${min}m"
}

val day = hour / 24L
if (day == 0L) {
return "${hour}h"
}

return "${day}d"
}


補足

System.currentTimeMillis()は引数で受け取るようにしてテストを書いたほうがいいですが、サンプルなのでわかりやすさ?を重視しました。

もっとうまく実装できるような気がしますがとりあえずこれでやりたいことは実現できました。

Twitterは1日以上前の場合はN日前という表示ではなく日付を表示しているようです。(例: 1 Jan, 31 Dec 2017