--- /dev/null
+package org.average.whereami;
+
+import android.content.res.Resources;
+import android.text.format.Time;
+import android.util.Log;
+
+public class SayWhen {
+
+ private String s_at;
+ private String yesterday;
+
+ public SayWhen(final Resources res) {
+ s_at = res.getString(R.string.s_at);
+ yesterday = res.getString(R.string.yesterday);
+ }
+
+ public String say(Long when) {
+ Long now = System.currentTimeMillis();
+ Time tnow = new Time();
+ tnow.set(now);
+ Time twhen = new Time();
+ twhen.set(when);
+ Boolean datechange = tnow.monthDay != twhen.monthDay;
+ Long hoursago = (System.currentTimeMillis() - when) / 3600000;
+ if (hoursago > 24) {
+ return s_at + twhen.format(" %H:%M %d/%m/%Y");
+ } else if ((tnow.hour > 4 || hoursago > 12) && datechange) {
+ return yesterday + " " + s_at + twhen.format(" %H:%M");
+ } else {
+ return s_at + twhen.format(" %H:%M");
+ }
+ }
+}