//# __________ PROTOCOL :: MISC __________ #// /** * Determine the difference between two dates. The resultant * array contains three elements { years, months, days }. */ public static int[] Difference(JwDate fromDate, JwDate toDate) { if ( fromDate.GetOrdinal() >= toDate.GetOrdinal() ) return new int[] { 0, 0, 0 }; int fromYear = fromDate.GetYear(); int fromMonth = fromDate.GetMonth(); int fromDay = fromDate.GetDay(); int toYear = toDate.GetYear(); int toMonth = toDate.GetMonth(); int toDay = toDate.GetDay(); int diffYears = toYear - fromYear; int diffMonths = toMonth - fromMonth; int diffDays = toDay - fromDay; if ( diffDays < 0 ) { diffDays += GetDaysInYearMonth(fromYear, fromMonth); diffMonths--; } if ( diffMonths < 0 ) { diffMonths += 12; diffYears--; } if ( fromYear < 0 && toYear > 0 ) diffYears--; if ( diffYears < 0 ) { diffYears = 0; diffMonths = 0; diffDays = 0; } return new int[] {diffYears, diffMonths, diffDays}; }
//# __________ PROTOCOL :: FORMAT __________ #// /** * I provide a very simple, and non-optimized, facility for formatting * dates in a variety of formats. Valid format codes are: * {d} : day of month (1-31) * {dd} : day of month (01-31) * {ddd} : weekday abbreviation (Sun-Sat) * {dddd} : weekday name (Sunday-Saturday) * {m} : month (1-12) * {mm} : month (01-12) * {mmm} : month abbreviation (Jan-Dec) * {mmmm} : month name (January-December) * {yy} : year (00-99) * {yyyy} : year (1800-9999) */ public static String Format(JwDate d, String format) { String s = format; s = JwUtility.ReplaceAll(s, "{mmmm}", JwDateUtility.GetMonthName(d.GetMonth())); s = JwUtility.ReplaceAll(s, "{mmm}", JwDateUtility.GetMonthAbbreviation(d.GetMonth())); s = JwUtility.ReplaceAll(s, "{mm}", Pad2(d.GetMonth())); s = JwUtility.ReplaceAll(s, "{m}", d.GetMonth() + ""); s = JwUtility.ReplaceAll(s, "{dddd}", JwDateUtility.GetDayOfWeekName(d.GetDayOfWeek())); s = JwUtility.ReplaceAll(s, "{ddd}", JwDateUtility.GetDayOfWeekAbbreviation(d.GetDayOfWeek())); s = JwUtility.ReplaceAll(s, "{dd}", Pad2(d.GetDay())); s = JwUtility.ReplaceAll(s, "{d}", d.GetDay() + ""); s = JwUtility.ReplaceAll(s, "{yyyy}", d.GetYear() + ""); s = JwUtility.ReplaceAll(s, "{yy}", Pad2(GetShortYear(d))); return s; }
/** * Format a date, e.g.: Jan 31, 1985 -> 1/31/1985 */ public static String Format_m_dd_yy(JwDate d) { return "" + d.GetMonth() + JwTimeConstants.DATE_SEPARATOR + Pad2(d.GetDay()) + JwTimeConstants.DATE_SEPARATOR + Pad2(GetShortYear(d)); }
/** * Format a date, e.g.: Jan 31, 1985 -> 19850131. */ public static String Format_yyyymmdd(JwDate d) { return "" + Pad4(d.GetYear()) + Pad2(d.GetMonth()) + Pad2(d.GetDay()); }
/** * Format a date, e.g.: Jan 31, 1985 -> 01/85 */ public static String Format_mm_yy(JwDate d) { return "" + Pad2(d.GetMonth()) + JwTimeConstants.DATE_SEPARATOR + Pad4(d.GetYear()); }