LoginSignup
8
6

More than 5 years have passed since last update.

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

Posted at

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

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6