From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 30 Apr 2016 04:19:14 -0400 Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates --- src/main/java/com/gitblit/utils/TimeUtils.java | 85 ++++++++++++++++++++++++------------------ 1 files changed, 49 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/gitblit/utils/TimeUtils.java b/src/main/java/com/gitblit/utils/TimeUtils.java index ec8871c..c0e98e5 100644 --- a/src/main/java/com/gitblit/utils/TimeUtils.java +++ b/src/main/java/com/gitblit/utils/TimeUtils.java @@ -20,12 +20,13 @@ import java.util.Calendar; import java.util.Date; import java.util.ResourceBundle; +import java.util.TimeZone; /** * Utility class of time functions. - * + * * @author James Moger - * + * */ public class TimeUtils { public static final long MIN = 1000 * 60L; @@ -37,45 +38,56 @@ public static final long ONEDAY = ONEHOUR * 24L; public static final long ONEYEAR = ONEDAY * 365L; - + private final ResourceBundle translation; - + + private final TimeZone timezone; + public TimeUtils() { - this(null); + this(null, null); } - - public TimeUtils(ResourceBundle translation) { + + public TimeUtils(ResourceBundle translation, TimeZone timezone) { this.translation = translation; + this.timezone = timezone; } /** * Returns true if date is today. - * + * * @param date * @return true if date is today */ - public static boolean isToday(Date date) { - return (System.currentTimeMillis() - date.getTime()) < ONEDAY; + public static boolean isToday(Date date, TimeZone timezone) { + Date now = new Date(); + SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); + if (timezone != null) { + df.setTimeZone(timezone); + } + return df.format(now).equals(df.format(date)); } /** * Returns true if date is yesterday. - * + * * @param date * @return true if date is yesterday */ - public static boolean isYesterday(Date date) { + public static boolean isYesterday(Date date, TimeZone timezone) { Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.DATE, -1); SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); + if (timezone != null) { + df.setTimeZone(timezone); + } return df.format(cal.getTime()).equals(df.format(date)); } /** * Returns the string representation of the duration as days, months and/or * years. - * + * * @param days * @return duration as string in days, months, and/or years */ @@ -111,7 +123,7 @@ /** * Returns the number of minutes ago between the start time and the end * time. - * + * * @param date * @param endTime * @param roundup @@ -128,7 +140,7 @@ /** * Return the difference in minutes between now and the date. - * + * * @param date * @param roundup * @return minutes ago @@ -139,7 +151,7 @@ /** * Return the difference in hours between now and the date. - * + * * @param date * @param roundup * @return hours ago @@ -155,7 +167,7 @@ /** * Return the difference in days between now and the date. - * + * * @param date * @return days ago */ @@ -178,7 +190,7 @@ /** * Returns the string representation of the duration between now and the * date. - * + * * @param date * @return duration as a string */ @@ -188,7 +200,7 @@ /** * Returns the CSS class for the date based on its age from Now. - * + * * @param date * @return the css class */ @@ -199,13 +211,13 @@ /** * Returns the string representation of the duration OR the css class for * the duration. - * + * * @param date * @param css * @return the string representation of the duration OR the css class */ private String timeAgo(Date date, boolean css) { - if (isToday(date) || isYesterday(date)) { + if (isToday(date, timezone) || isYesterday(date, timezone)) { int mins = minutesAgo(date, true); if (mins >= 120) { if (css) { @@ -267,7 +279,7 @@ } } } - + public String inFuture(Date date) { long diff = date.getTime() - System.currentTimeMillis(); if (diff > ONEDAY) { @@ -283,7 +295,7 @@ } } } - + private String translate(String key, String defaultValue) { String value = defaultValue; if (translation != null && translation.containsKey(key)) { @@ -294,7 +306,7 @@ } return value; } - + private String translate(int val, String key, String defaultPattern) { String pattern = defaultPattern; if (translation != null && translation.containsKey(key)) { @@ -308,14 +320,15 @@ /** * Convert a frequency string into minutes. - * + * * @param frequency + * @param minimumMins * @return minutes */ - public static int convertFrequencyToMinutes(String frequency) { + public static int convertFrequencyToMinutes(String frequency, int minimumMins) { // parse the frequency frequency = frequency.toLowerCase(); - int mins = 60; + int mins = minimumMins; if (!StringUtils.isEmpty(frequency)) { try { String str = frequency.trim(); @@ -325,16 +338,16 @@ mins = (int) Float.parseFloat(str); } catch (NumberFormatException e) { } - if (mins < 5) { - mins = 5; + if (mins < minimumMins) { + mins = minimumMins; } - } - if (frequency.indexOf("day") > -1) { - // convert to minutes - mins *= 1440; - } else if (frequency.indexOf("hour") > -1) { - // convert to minutes - mins *= 60; + if (frequency.indexOf("day") > -1) { + // convert to minutes + mins *= 1440; + } else if (frequency.indexOf("hour") > -1) { + // convert to minutes + mins *= 60; + } } return mins; } -- Gitblit v1.9.1