package bruce.lib; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * @author NaNashi * */ public class DateHelper { private final static SimpleDateFormat LOG_DATE = new SimpleDateFormat("yyyyMMdd", Locale.US); private final static SimpleDateFormat DATE_ONLY = new SimpleDateFormat("yyyy/MM/dd", Locale.US); private final static SimpleDateFormat FULL_DATE = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.US); public final static String logDate() { return LOG_DATE.format(new Date()); } public final static String formatDate(Date date) { return date == null ? null : DATE_ONLY.format(date); } public final static String formatFullDate(Date date) { return date == null ? null : FULL_DATE.format(date); } public final static Date parseDate(String source) { return parseDate(source, false); } public final static Date parseDate(String source, boolean returnNowOnfailed) { try { return DATE_ONLY.parse(source); } catch (Exception e) { return returnNowOnfailed ? new Date() : null; } } public final static Date parseFullDate(String source) { return parseDate(source, false); } public final static Date parseFullDate(String source, boolean returnNowOnfailed) { try { return FULL_DATE.parse(source); } catch (Exception e) { return returnNowOnfailed ? new Date() : null; } } public final static String diffTime(Date before, Date after) { long sticks = Math.abs(before.getTime() - after.getTime()); int seconds = (int) (sticks / 1000); int minutes = seconds / 60; int hours = minutes / 60; int days = hours / 24; StringBuilder sb = new StringBuilder(); if (days > 0) { sb.append(days).append("天"); hours -= days * 24; minutes -= days * 24 * 60; seconds -= days * 24 * 60 * 60; } if (hours > 0) { sb.append(hours).append("小時"); minutes -= hours * 60; seconds -= hours * 60 * 60; } if (hours > 0 || minutes > 0) { sb.append(minutes).append("分"); seconds -= minutes * 60; } sb.append(seconds).append("秒").append(before.after(after) ? "後" : "前"); return sb.toString(); } public static String replaceMonthWord(String s) { s = s.toLowerCase(); String[] month = new String[] { "January", "Februaary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; for (int i = 0; i < month.length; i++) { String m = month[i].toLowerCase(); if (s.contains(m.toLowerCase())) return s.replace(m, String.valueOf(i + 1)); } return s; } }