SNSとかでよくある何秒前、何分前、何時間前、何日前の投稿かが分かるUIを実現したかったため作りました。
やりたいこと
環境
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
)