@Nullable public static Season fromDate(final GameDateConst date) { Season.m_cleanDate.set(0, 0, 0, date.getDay(), date.getMonth(), 0); for (final Season season : Season.m_seasons) { for (int k = season.m_intervals.length / 2, i = 0; i < k; ++i) { final GameDateConst begin = season.m_intervals[i * 2]; final GameDateConst end = season.m_intervals[i * 2 + 1]; if ((begin.equals(Season.m_cleanDate) || begin.before(Season.m_cleanDate)) && (end.after(Season.m_cleanDate) || end.equals(Season.m_cleanDate))) { return season; } } } return null; }
public int daysFromStartingDate(final GameDateConst date) { Season.m_cleanDate.set( date.getSeconds(), date.getMinutes(), date.getHours(), date.getDay(), date.getMonth(), 0); final int k = this.m_intervals.length / 2; int days = 0; for (int i = 0; i < k; ++i) { final GameDateConst begin = this.m_intervals[i * 2]; final GameDateConst end = this.m_intervals[i * 2 + 1]; if ((begin.equals(Season.m_cleanDate) || begin.before(Season.m_cleanDate)) && (end.after(Season.m_cleanDate) || end.equals(Season.m_cleanDate))) { days += begin.timeTo(Season.m_cleanDate).getDays(); break; } days += begin.timeTo(end).getDays(); } return days; }