Идеята е от 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; // в милисекунди :D :D 
Date df = new java.util.Date(dv);
PrettyDate date = new PrettyDate(df);
System.out.println("Посетено " + date.toString());