summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/utils/TimeUtils.java
blob: bb0573e721d85df849a3fb8f267905c7574f5708 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package de.danoeh.antennapod.utils;


import android.content.Context;

import java.util.Date;

import de.danoeh.antennapod.R;

/*
 * Copyright 2012 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

//http://stackoverflow.com/questions/13018550/time-since-ago-library-for-android-java


public class TimeUtils {
    private static final int SECOND_MILLIS = 1000;
    private static final int MINUTE_MILLIS = 60 * SECOND_MILLIS;
    private static final int HOUR_MILLIS = 60 * MINUTE_MILLIS;
    private static final int DAY_MILLIS = 24 * HOUR_MILLIS;


    public static String getTimeAgo(long time, Context ctx) {
        if (time < 1000000000000L) {
            // if timestamp given in seconds, convert to millis
            time *= 1000;
        }

        long now = new Date().getTime();
        if (time > now || time <= 0) {
            return null;
        }

        final long diff = now - time;
        if (diff < MINUTE_MILLIS) {
            return ctx.getString(R.string.time_just_now);
        } else if (diff < 2 * MINUTE_MILLIS) {
            return ctx.getString(R.string.time_a_min_ago);
        } else if (diff < 50 * MINUTE_MILLIS) {
            return diff / MINUTE_MILLIS + ctx.getString(R.string.time_min_ago);
        } else if (diff < 90 * MINUTE_MILLIS) {
            return ctx.getString(R.string.time_an_hour_ago);
        } else if (diff < 24 * HOUR_MILLIS) {
            return diff / HOUR_MILLIS + ctx.getString(R.string.time_hours_ago);
        } else if (diff < 48 * HOUR_MILLIS) {
            return ctx.getString(R.string.time_yesterday);
        } else {
            return diff / DAY_MILLIS + ctx.getString(R.string.time_days_ago);
        }
    }
}