22
33/**
44 * Converts a timestamp to time ago format.
5- * Example: # years # months # weeks # days ago
5+ * Example: # years # months # weeks # days # hours # minutes ago
66 *
77 * @param timestamp the epoch time() to convert
8- * @param granularity how many details to display
8+ * @param granularity how many details to display (defaults to 2)
99 * @returns time in human readable format
1010 */
1111varargs string time_ago (int timestamp , int granularity ) {
@@ -26,6 +26,9 @@ varargs string time_ago (int timestamp, int granularity) {
2626 diff = diff - (Weeks * WEEK_IN_SECS );
2727 Days = diff / DAY_IN_SECS ;
2828 diff = diff - (Days * DAY_IN_SECS );
29+ Hours = diff / HOUR_IN_SECS ;
30+ diff = diff - (Hours * HOUR_IN_SECS );
31+ Minutes = diff / MINUTE_IN_SECS ;
2932
3033 if (Years > 0 ) {
3134 msg += Years + " year" + (Years > 1 ? "s" : "" );
@@ -35,41 +38,39 @@ varargs string time_ago (int timestamp, int granularity) {
3538 return msg + " ago" ;
3639 }
3740 if (Months > 0 ) {
38- msg += (sizeof (msg )> 0 ? " " : "" ) + Months + " month" + (Months > 1 ? "s" : "" );
41+ msg += (sizeof (msg ) > 0 ? " " : "" ) + Months + " month" + (Months > 1 ? "s" : "" );
3942 matches ++ ;
4043 }
4144 if (granularity > 0 && matches >= granularity ) {
4245 return msg + " ago" ;
4346 }
4447 if (Weeks > 0 ) {
45- msg += (sizeof (msg )> 0 ? " " : "" ) + Weeks + " week" + (Weeks > 1 ? "s" : "" );
48+ msg += (sizeof (msg ) > 0 ? " " : "" ) + Weeks + " week" + (Weeks > 1 ? "s" : "" );
4649 matches ++ ;
4750 }
4851 if (granularity > 0 && matches >= granularity ) {
4952 return msg + " ago" ;
5053 }
5154 if (Days > 0 ) {
52- msg += (sizeof (msg )> 0 ? " " : "" ) + Days + " day" + (Days > 1 ? "s" : "" );
55+ msg += (sizeof (msg ) > 0 ? " " : "" ) + Days + " day" + (Days > 1 ? "s" : "" );
5356 matches ++ ;
5457 }
5558 if (granularity > 0 && matches >= granularity ) {
5659 return msg + " ago" ;
5760 }
58-
59- if (sizeof (msg ) > 0 ) {
60- return msg + " ago" ;
61- }
62-
63- Hours = diff / HOUR_IN_SECS ;
64- diff = diff - (Hours * HOUR_IN_SECS );
6561 if (Hours > 0 ) {
66- return Hours + " hour" + (Hours > 1 ? "s" : "" ) + " ago" ;
62+ msg += (sizeof (msg ) > 0 ? " " : "" ) + Hours + " hour" + (Hours > 1 ? "s" : "" );
63+ matches ++ ;
64+ }
65+ if (granularity > 0 && matches >= granularity ) {
66+ return msg + " ago" ;
6767 }
68-
69- Minutes = diff / MINUTE_IN_SECS ;
70- diff = diff - (Minutes * MINUTE_IN_SECS );
7168 if (Minutes > 0 ) {
72- return Minutes + " minute" + (Minutes > 1 ? "s" : "" ) + " ago" ;
69+ msg += (sizeof (msg ) > 0 ? " " : "" ) + Minutes + " minute" + (Minutes > 1 ? "s" : "" );
70+ matches ++ ;
71+ }
72+ if (sizeof (msg ) > 0 ) {
73+ return msg + " ago" ;
7374 }
7475
7576 return "very recently" ;
0 commit comments