Heads up! This post was written 12 years ago. Some information might be outdated or may have changed since then.
Идеята е от timestamp да получим текст от сорта на преди ХХ време
import java.util.Date;
public class PrettyDate {
    private Date date;

    public PrettyDate() {
        this(new Date());
    }

    public PrettyDate(Date date) {
        this.date = date;
    }

    public String toString() {
        long current = (new Date()).getTime(), timestamp = date.getTime(), diff = (current - timestamp) / 1000;
        int amount = 0;
        String what = "";

        if (diff > 31536000) {
            amount = (int) (diff / 31536000);
            what = "година";
        } else if (diff > 31536000) {
            amount = (int) (diff / 31536000);
            what = "месеца";
        } else if (diff > 604800) {
            amount = (int) (diff / 604800);
            what = "седмици";
        } else if (diff > 86400) {
            amount = (int) (diff / 86400);
            what = "ден";
        } else if (diff > 3600) {
            amount = (int) (diff / 3600);
            what = "часа";
        } else if (diff > 60) {
            amount = (int) (diff / 60);
            what = "минути";
        } else {
            amount = (int) diff;
            what = "секунди";
            if (amount < 6) {
                return "точно сега";
            }
        }
        
        if (amount == 1) {
            if (what.equals("ден")) {
                return "вчера";
            } else if (what.equals("седмици") || what.equals("месеца") || what.equals("години")) {
                if (what.equals("месеца")) {
                    return "преди " + amount + "месец";
                }
                if (what.equals("седмици")) {
                    return "преди " + amount + "седмица";
                }
                if (what.equals("години")) {
                    return "преди " + amount + "година";
                }
                return "преди " + what;
            }
        }
        
        return "преди " + amount + " " + what;
    }
}
Може да го използваме по следния начин:
long dv = Long.valueOf(item.date) * 1000;
Date df = new java.util.Date(dv);
PrettyDate date = new PrettyDate(df);
System.out.println("Посетено " + date.toString());

Back to all posts