java中封装日期加时间_java日期处理简单封装

1 packageluojing.date;2

3 importjava.io.Serializable;4 importjava.text.ParseException;5 importjava.text.SimpleDateFormat;6 importjava.util.Calendar;7 importjava.util.Date;8 importjava.util.TimeZone;9

10 /**

11 * 日期时间处理封装12 *13 *@authorluojing14 */

15 public class DateTime implements Comparable, Serializable {16

17 private static final long serialVersionUID = 4715414577633839197L;18 private Calendar calendar =Calendar.getInstance();19 private SimpleDateFormat sdf = newSimpleDateFormat();20

21 private final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";22 private final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";23 private final String DEFAULT_TIME_PATTERN = "HH:mm:ss";24

25 publicDateTime() {26 }27

28 publicDateTime(String dateStr) {29 try{30 parse(dateStr);31 } catch(Exception e) {32 e.printStackTrace();33 }34 }35

36 publicDateTime(String dateStr, TimeZone timeZone) {37 this(dateStr);38 calendar.setTimeZone(timeZone);39 }40

41 publicDateTime(String dateStr, String pattern) {42 try{43 parse(dateStr, pattern);44 } catch(Exception e) {45 e.printStackTrace();46 }47 }48

49 publicDateTime(String dateStr, String pattern, TimeZone timeZone) {50 this(dateStr, pattern);51 calendar.setTimeZone(timeZone);52 }53

54 public DateTime(int year, int month, int day, int hour, int minute, intsecond) {55 calendar.set(year, month, day, hour, minute, second);56 }57

58 public DateTime(int year, int month, int day, int hour, int minute, intsecond, TimeZone timeZone) {59 this(year, month, day, hour, minute, second);60 calendar.setTimeZone(timeZone);61 }62

63 public DateTime(longmilliSeconds) {64 calendar.setTimeInMillis(milliSeconds);65 }66

67 publicCalendar getCalendar() {68 returncalendar;69 }70

71 public voidsetCalendar(Calendar calendar) {72 this.calendar =calendar;73 }74

75 publicDate getDate() {76 returncalendar.getTime();77 }78

79 public voidsetDate(Date date) {80 calendar.setTime(date);81 }82

83 public intgetYear() {84 returncalendar.get(Calendar.YEAR);85 }86

87 public void setYear(intyear) {88 calendar.set(Calendar.YEAR, year);89 }90

91 public intgetMonth() {92 returncalendar.get(Calendar.MONTH);93 }94

95 public void setMonth(intmonth) {96 calendar.set(Calendar.MONTH, month);97 }98

99 public intgetDay() {100 returncalendar.get(Calendar.DAY_OF_MONTH);101 }102

103 public void setDay(intdayOfMonth) {104 calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);105 }106

107 public intgetHour() {108 returncalendar.get(Calendar.HOUR_OF_DAY);109 }110

111 public void setHour(inthour) {112 calendar.set(Calendar.HOUR_OF_DAY, hour);113 }114

115 public intgetMinute() {116 returncalendar.get(Calendar.MINUTE);117 }118

119 public void setMinute(intminute) {120 calendar.set(Calendar.MINUTE, minute);121 }122

123 public intgetSecond() {124 returncalendar.get(Calendar.SECOND);125 }126

127 public void setSecond(intsecond) {128 calendar.set(Calendar.SECOND, second);129 }130

131 public longgetTimeInMilliSeconds() {132 returncalendar.getTimeInMillis();133 }134

135 public void setTimeInMilliSeconds(longmilliSeconds) {136 calendar.setTimeInMillis(milliSeconds);137 }138

139 publicTimeZone getTimeZone() {140 returncalendar.getTimeZone();141 }142

143 public voidsetTimeZone(TimeZone timeZone) {144 calendar.setTimeZone(timeZone);145 }146

147 /**

148 * 使用默认格式解析日期字符串149 *150 *@paramdateStr151 *@throwsException152 */

153 public void parse(String dateStr) throwsException {154 try{155 parse(dateStr, DEFAULT_DATETIME_PATTERN);156 } catch(Exception e) {157 try{158 parse(dateStr, DEFAULT_DATE_PATTERN);159 } catch(Exception e1) {160 try{161 parse(dateStr, DEFAULT_TIME_PATTERN);162 } catch(Exception e2) {163 throw new Exception("the date string [" + dateStr + "] could not be parsed");164 }165 }166 }167

168 }169

170 /**

171 * 使用给定模式解析日期字符串172 *173 *@paramdateStr174 *@parampattern175 *@throwsException176 */

177 public void parse(String dateStr, String pattern) throwsException {178 if (dateStr == null) {179 throw new NullPointerException("date string could not be null");180 }181

182 if (pattern == null) {183 throw new NullPointerException("the pattern string could not be null");184 }185

186 try{187 sdf.applyPattern(pattern);188 sdf.parse(dateStr);189 } catch(ParseException e) {190 throw new Exception("the date string [" + dateStr + "] could not be parsed with the pattern [" + pattern + "]");191 }192 calendar =sdf.getCalendar();193 }194

195 /**

196 * 格式化当前DateTime对象代表的时间197 *198 *@parampattern199 *@return

200 */

201 publicString format(String pattern) {202 sdf.applyPattern(pattern);203 returnsdf.format(calendar.getTime());204 }205

206 /**

207 * 获取默认格式日期字符串208 *209 *@return

210 */

211 publicString toDateTimeString() {212 sdf.applyPattern(DEFAULT_DATETIME_PATTERN);213 returnsdf.format(calendar.getTime());214 }215

216 @Override217 public intcompareTo(DateTime otherDateTime) {218 returncalendar.compareTo(otherDateTime.getCalendar());219 }220

221 /**

222 * 是否闰年223 *224 *@return

225 */

226 public booleanisLeapYear() {227 int year =getYear();228 boolean result = false;229 if (year % 100 == 0) {230 if (year % 400 == 0) {231 result = true;232 }233 } else if (year % 4 == 0) {234 result = true;235 }236 returnresult;237 }238

239 /**

240 * 获取星期241 *242 *@return

243 */

244 public intgetDayOfWeek() {245 returncalendar.get(Calendar.DAY_OF_WEEK);246 }247

248 /**

249 * 是否周末250 *251 *@return

252 */

253 public booleanisWeekend() {254 int dayOfWeek =getDayOfWeek();255 return dayOfWeek == 1 || dayOfWeek == 7;256 }257

258 /**

259 * 当前DateTime对象月份天数260 *261 *@return

262 */

263 public intgetDayNumsInMonth() {264 Calendar c =(Calendar) calendar.clone();265 c.set(Calendar.DAY_OF_MONTH, 1);266 c.roll(Calendar.DAY_OF_MONTH, -1);267 returnc.get(Calendar.DAY_OF_MONTH);268 }269

270 /**

271 * 两个日期之间间隔天数272 *273 *@paramotherDateTime274 *@return

275 */

276 public intdayNumFrom(DateTime otherDateTime) {277 long millis = Math.abs(getTimeInMilliSeconds() -otherDateTime.getTimeInMilliSeconds());278 int days = (int) Math.floor(millis / 86400000);279 returndays;280 }281

282 public booleanlessThan(DateTime otherDateTime) {283 return compareTo(otherDateTime) < 0;284 }285

286 public booleangreaterThan(DateTime otherDateTime) {287 return compareTo(otherDateTime) > 0;288 }289

290 public booleanequal(DateTime otherDateTime) {291 return compareTo(otherDateTime) == 0;292 }293

294 /**

295 * 当前时间基础上增加秒数(负数时为减)296 *297 *@paramamount298 */

299 public void plusSecond(intamount) {300 calendar.add(Calendar.SECOND, amount);301 }302

303 public void plusMinute(intamount) {304 calendar.add(Calendar.MINUTE, amount);305 }306

307 public void plusHour(intamount) {308 calendar.add(Calendar.HOUR, amount);309 }310

311 public void plusDays(intamount) {312 calendar.add(Calendar.DAY_OF_MONTH, amount);313 }314

315 public void plusMonth(intamount) {316 calendar.add(Calendar.MONTH, amount);317 }318

319 public void plusYear(intamount) {320 calendar.add(Calendar.YEAR, amount);321 }322

323 public void plus(int year, int month, int day, int hour, int minute, intsecond) {324 plusYear(year);325 plusMonth(month);326 plusDays(day);327 plusHour(hour);328 plusMinute(minute);329 plusSecond(second);330 }331

332 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值