1 4 package org.oddjob.schedules; 5 6 import java.util.Calendar ; 7 import java.util.Date ; 8 import java.util.TimeZone ; 9 10 public class CalendarUtils { 11 12 17 public static void setEndOfDay(Calendar calendar) { 18 calendar.set(Calendar.HOUR_OF_DAY, 23); 19 calendar.set(Calendar.MINUTE, 59); 20 calendar.set(Calendar.SECOND, 59); 21 calendar.set(Calendar.MILLISECOND, 999); 22 } 23 24 29 public static void setEndOfMonth(Calendar calendar) { 30 calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 1); 31 calendar.set(Calendar.DAY_OF_MONTH, 0); 32 calendar.set(Calendar.HOUR_OF_DAY, 23); 33 calendar.set(Calendar.MINUTE, 59); 34 calendar.set(Calendar.SECOND, 59); 35 calendar.set(Calendar.MILLISECOND, 999); 36 } 37 38 44 public static Calendar startOfMonth(Date inDate, TimeZone timeZone) { 45 Calendar c1 = Calendar.getInstance(timeZone); 46 c1.setTime(inDate); 47 48 Calendar c2 = Calendar.getInstance(timeZone); 49 c2.clear(); 50 c2.set(c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), 1); 51 return c2; 52 } 53 54 60 public static Calendar endOfMonth(Date inDate, TimeZone timeZone) { 61 Calendar c1 = Calendar.getInstance(timeZone); 62 c1.setTime(inDate); 63 64 Calendar c2 = Calendar.getInstance(timeZone); 66 c2.clear(); 67 c2.set(c1.get(Calendar.YEAR), c1.get(Calendar.MONTH) + 1, 1); 68 c2.add(Calendar.MILLISECOND, -1); 70 return c2; 71 } 72 73 81 public static Calendar dayOfMonth(Date referenceDate, int day, TimeZone timeZone) { 82 Calendar c1 = Calendar.getInstance(timeZone); 83 c1.setTime(referenceDate); 84 85 int month = day > 0 ? c1.get(Calendar.MONTH) : c1.get(Calendar.MONTH) + 1; 86 87 Calendar c2 = Calendar.getInstance(timeZone); 88 c2.clear(); 89 c2.set(c1.get(Calendar.YEAR), month, day); 90 return c2; 91 } 92 93 100 public static Calendar startOfWeek(Date inDate, TimeZone timeZone) { 101 Calendar c1 = Calendar.getInstance(timeZone); 102 c1.setTime(inDate); 103 104 Calendar c2 = Calendar.getInstance(timeZone); 105 c2.clear(); 106 c2.set(c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), 107 c1.get(Calendar.DAY_OF_MONTH) - (c1.get(Calendar.DAY_OF_WEEK) - 1)); 108 return c2; 109 } 110 111 118 public static Calendar endOfWeek(Date inDate, TimeZone timeZone) { 119 Calendar c1 = Calendar.getInstance(timeZone); 120 c1.setTime(inDate); 121 122 Calendar c2 = Calendar.getInstance(timeZone); 123 c2.clear(); 124 c2.set(c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), 125 c1.get(Calendar.DAY_OF_MONTH) + (8 - c1.get(Calendar.DAY_OF_WEEK))); 126 c2.add(Calendar.MILLISECOND, -1); 127 return c2; 128 } 129 130 138 public static Calendar dayOfWeek(Date referenceDate, int day, TimeZone timeZone) { 139 140 Calendar c1 = Calendar.getInstance(timeZone); 141 c1.setTime(referenceDate); 142 143 Calendar c2 = Calendar.getInstance(timeZone); 144 c2.clear(); 145 c2.set(c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), 146 c1.get(Calendar.DAY_OF_MONTH)); 147 c2.add(Calendar.DATE, day - c1.get(Calendar.DAY_OF_WEEK)); 148 return c2; 149 } 150 151 157 public static Calendar startOfYear(Date referenceDate, TimeZone timeZone) { 158 Calendar c1 = Calendar.getInstance(timeZone); 159 c1.setTime(referenceDate); 160 161 Calendar c2 = Calendar.getInstance(timeZone); 162 c2.clear(); 163 c2.set(c1.get(Calendar.YEAR), 0, 1); 164 return c2; 165 } 166 167 174 public static Calendar endOfYear(Date referenceDate, TimeZone timeZone) { 175 Calendar c1 = Calendar.getInstance(timeZone); 176 c1.setTime(referenceDate); 177 178 Calendar c2 = Calendar.getInstance(); 179 c2.clear(); 180 c2.set(c1.get(Calendar.YEAR) + 1, 0, 1); 181 c2.setTimeZone(timeZone); 182 c2.add(Calendar.MILLISECOND, -1); 184 return c2; 185 } 186 187 188 195 public static Calendar dayOfYear(Date referenceDate, int dayOfYear, TimeZone timeZone) { 196 Calendar c1 = Calendar.getInstance(); 197 c1.setTimeZone(timeZone); 198 c1.setTime(referenceDate); 199 200 Calendar c2 = Calendar.getInstance(timeZone); 201 c2.clear(); 202 c2.set(Calendar.YEAR, c1.get(Calendar.YEAR)); 203 c2.set(Calendar.DAY_OF_YEAR, dayOfYear); 204 return c2; 205 } 206 207 214 public static Calendar monthOfYear(Date referenceDate, int month, TimeZone timeZone) { 215 Calendar c1 = Calendar.getInstance(timeZone); 216 c1.setTime(referenceDate); 217 218 Calendar c2 = Calendar.getInstance(timeZone); 219 c2.clear(); 220 c2.set(c1.get(Calendar.YEAR), month, 1); 221 return c2; 222 } 223 224 } 225 | Popular Tags |