java日期处理简单封装

今天没什么事情做,温习一下基本知识,在网上看到和日期处理的相关框架,什么joda,date4j等,都宣称超级强大简单易用。下下来试了下,确实都挺不错。不过自己不是经常涉及到日期操作,且涉及到的也不复杂。且不说这些库的功能强不强大,单说为了处理个时间就引入几十个类,实在有点浪费了。再说JDK提供的Calendar和SimpleDateFormat组合使用功能也还是非常强大啊。如果觉得同时使用这两个类稍显麻烦,可以稍微封装一下,即可满足大部分需求,,就一个类,自己需要用到什么功能的时候,添加进去就行了。

1 package luojing.date; java.io.Serializable; 4 import java.text.ParseException; 5 import java.text.SimpleDateFormat; 6 import java.util.Calendar; 7 import java.util.Date; 8 import java.util.TimeZone; * 日期时间处理封装 12 * luojingDateTime implements Comparable<DateTime>, Serializable {serialVersionUID = 4715414577633839197L; 18private Calendar calendar = Calendar.getInstance(); 19private SimpleDateFormat sdf = new SimpleDateFormat();String DEFAULT_DATETIME_PATTERN = “yyyy-MM-dd HH:mm:ss”;String DEFAULT_DATE_PATTERN = “yyyy-MM-dd”;String DEFAULT_TIME_PATTERN = “HH:mm:ss”; DateTime() { 26 } DateTime(String dateStr) { 29try { 30 parse(dateStr); 31} catch (Exception e) { 32 e.printStackTrace(); 33 } 34 } DateTime(String dateStr, TimeZone timeZone) { 37this(dateStr); 38 calendar.setTimeZone(timeZone); 39 } DateTime(String dateStr, String pattern) { 42try { 43 parse(dateStr, pattern); 44} catch (Exception e) { 45 e.printStackTrace(); 46 } 47 } DateTime(String dateStr, String pattern, TimeZone timeZone) { 50this(dateStr, pattern); 51 calendar.setTimeZone(timeZone); 52 }DateTime(int year, int month, int day, int hour, int minute, int second) { 55 calendar.set(year, month, day, hour, minute, second); 56 }DateTime(int year, int month, int day, int hour, int minute, int second, TimeZone timeZone) { 59this(year, month, day, hour, minute, second); 60 calendar.setTimeZone(timeZone); 61 }DateTime(long milliSeconds) { 64 calendar.setTimeInMillis(milliSeconds); 65 } Calendar getCalendar() { 68return calendar; 69 } setCalendar(Calendar calendar) { 72this.calendar = calendar; 73 } Date getDate() { 76return calendar.getTime(); 77 } setDate(Date date) { 80 calendar.setTime(date); 81 } getYear() { 84return calendar.get(Calendar.YEAR); 85 }setYear(int year) { 88 calendar.set(Calendar.YEAR, year); 89 } getMonth() { 92return calendar.get(Calendar.MONTH); 93 }setMonth(int month) { 96 calendar.set(Calendar.MONTH, month); 97 } getDay() {100return calendar.get(Calendar.DAY_OF_MONTH);101 }setDay(int dayOfMonth) {104 calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);105 } getHour() {108return calendar.get(Calendar.HOUR_OF_DAY);109 }setHour(int hour) {112 calendar.set(Calendar.HOUR_OF_DAY, hour);113 } getMinute() {116return calendar.get(Calendar.MINUTE);117 }setMinute(int minute) {120 calendar.set(Calendar.MINUTE, minute);121 } getSecond() {124return calendar.get(Calendar.SECOND);125 }setSecond(int second) {128 calendar.set(Calendar.SECOND, second);129 } getTimeInMilliSeconds() {132return calendar.getTimeInMillis();133 }setTimeInMilliSeconds(long milliSeconds) {136 calendar.setTimeInMillis(milliSeconds);137 } TimeZone getTimeZone() {140return calendar.getTimeZone();141 } setTimeZone(TimeZone timeZone) {144 calendar.setTimeZone(timeZone);145 }* 使用默认格式解析日期字符串149 * dateStr Exceptionparse(String dateStr) throws Exception {154try {155 parse(dateStr, DEFAULT_DATETIME_PATTERN);156} catch (Exception e) {157try {158 parse(dateStr, DEFAULT_DATE_PATTERN);159} catch (Exception e1) {160try {161 parse(dateStr, DEFAULT_TIME_PATTERN);162} catch (Exception e2) {Exception(“the date string [” + dateStr + “] could not be parsed”);164 }165 }166 }167 168 }* 使用给定模式解析日期字符串172 * dateStr pattern Exceptionparse(String dateStr, String pattern) throws Exception {178if (dateStr == null) {NullPointerException(“date string could not be null”);180 }(pattern == null) {NullPointerException(“the pattern string could not be null”);184 } {187 sdf.applyPattern(pattern);188 sdf.parse(dateStr);189} catch (ParseException e) {Exception(“the date string [” + dateStr + “] could not be parsed with the pattern [” + pattern + “]”);191 }192calendar = sdf.getCalendar();193 }* 格式化当前DateTime对象代表的时间197 * pattern String format(String pattern) {202 sdf.applyPattern(pattern);203return sdf.format(calendar.getTime());204 }* 获取默认格式日期字符串208 * String toDateTimeString() {212 sdf.applyPattern(DEFAULT_DATETIME_PATTERN);213return sdf.format(calendar.getTime());214 }215 216 @Override compareTo(DateTime otherDateTime) {218return calendar.compareTo(otherDateTime.getCalendar());219 }* 是否闰年223 * isLeapYear() {227int year = getYear();228boolean result = false;229if (year % 100 == 0) {230if (year % 400 == 0) {231result = true;232 }233} else if (year % 4 == 0) {234result = true;235 }236return result;237 }* 获取星期241 * getDayOfWeek() {245return calendar.get(Calendar.DAY_OF_WEEK);246 }* 是否周末250 * isWeekend() {254int dayOfWeek = getDayOfWeek();255return dayOfWeek == 1 || dayOfWeek == 7;256 }* 当前DateTime对象月份天数260 * getDayNumsInMonth() {264Calendar c = (Calendar) calendar.clone();265c.set(Calendar.DAY_OF_MONTH, 1);266c.roll(Calendar.DAY_OF_MONTH, -1);267return c.get(Calendar.DAY_OF_MONTH);268 }* 两个日期之间间隔天数272 * otherDateTime dayNumFrom(DateTime otherDateTime) {277long millis = Math.abs(getTimeInMilliSeconds() – otherDateTime.getTimeInMilliSeconds());278int days = (int) Math.floor(millis / 86400000);279return days;280 } lessThan(DateTime otherDateTime) {283return compareTo(otherDateTime) < 0;284 } greaterThan(DateTime otherDateTime) {287return compareTo(otherDateTime) > 0;288 } equal(DateTime otherDateTime) {291return compareTo(otherDateTime) == 0;292 }* 当前时间基础上增加秒数(负数时为减)296 * amountplusSecond(int amount) {300 calendar.add(Calendar.SECOND, amount);301 }plusMinute(int amount) {304 calendar.add(Calendar.MINUTE, amount);305 }plusHour(int amount) {308 calendar.add(Calendar.HOUR, amount);309 }plusDays(int amount) {312 calendar.add(Calendar.DAY_OF_MONTH, amount);313 }plusMonth(int amount) {316 calendar.add(Calendar.MONTH, amount);317 }plusYear(int amount) {320 calendar.add(Calendar.YEAR, amount);321 }plus(int year, int month, int day, int hour, int minute, int second) {324 plusYear(year);325 plusMonth(month);326 plusDays(day);327 plusHour(hour);328 plusMinute(minute);329 plusSecond(second);330 }331 332 }明天是世上增值最快的一块土地,因它充满了希望

java日期处理简单封装

相关文章:

你感兴趣的文章:

标签云: