Java human readable time
Published on 26.02.2013
Идеята е от 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());