

??1?package?com.ly.util;
??2?
??3?import?java.text.DateFormat;
??4?import?java.text.ParseException;
??5?import?java.text.SimpleDateFormat;
??6?import?java.util.Calendar;
??7?import?java.util.Date;
??8?
??9?/**
?10??*?
?11??*?功能描述
?12??*?
?13??*?@author?Administrator
?14??*?@Date?Jul?19,?2008
?15??*?@Time?9:47:53?AM
?16??*?@version?1.0
?17??*/
?18?public?class?DateUtil?{
?19?
?20?????public?static?Date?date?=?null;
?21?
?22?????public?static?DateFormat?dateFormat?=?null;
?23?
?24?????public?static?Calendar?calendar?=?null;
?25?????
?26?????
?27?????/**
?28??????*?英文簡寫(默認)如:2010-12-01
?29??????*/
?30?????public?static?String?FORMAT_SHORT?=?"yyyy-MM-dd";
?31?????
?32?????/**
?33??????*?英文全稱??如:2010-12-01?23:15:06
?34??????*/
?35?????public?static?String?FORMAT_LONG?=?"yyyy-MM-dd?HH:mm:ss";
?36?????
?37?????/**
?38??????*?精確到毫秒的完整時間????如:yyyy-MM-dd?HH:mm:ss.S
?39??????*/
?40?????public?static?String?FORMAT_FULL?=?"yyyy-MM-dd?HH:mm:ss.S";
?41?????
?42?????/**
?43??????*?中文簡寫??如:2010年12月01日
?44??????*/
?45?????public?static?String?FORMAT_SHORT_CN?=?"yyyy年MM月dd";
?46?????
?47?????/**
?48??????*?中文全稱??如:2010年12月01日??23時15分06秒
?49??????*/
?50?????public?static?String?FORMAT_LONG_CN?=?"yyyy年MM月dd日??HH時mm分ss秒";
?51?????
?52?????/**
?53??????*?精確到毫秒的完整中文時間
?54??????*/
?55?????public?static?String?FORMAT_FULL_CN?=?"yyyy年MM月dd日??HH時mm分ss秒SSS毫秒";
?56?
?57?????/**
?58??????*?獲得默認的?date?pattern
?59??????*/
?60?????public?static?String?getDatePattern()?{
?61?????????return?FORMAT_LONG;
?62?????}
?63?
?64?????/**
?65??????*?根據預設格式返回當前日期
?66??????*?@return
?67??????*/
?68?????public?static?String?getNow()?{
?69?????????return?format(new?Date());
?70?????}
?71?????
?72?????/**
?73??????*?根據用戶格式返回當前日期
?74??????*?@param?format
?75??????*?@return
?76??????*/
?77?????public?static?String?getNow(String?format)?{
?78?????????return?format(new?Date(),?format);
?79?????}
?80?
?81?????
?82?????/**
?83??????*?使用預設格式格式化日期
?84??????*?@param?date
?85??????*?@return
?86??????*/
?87?????public?static?String?format(Date?date)?{
?88?????????return?format(date,?getDatePattern());
?89?????}
?90?
?91?????/**
?92??????*?使用用戶格式格式化日期
?93??????*?@param?date?日期
?94??????*?@param?pattern?日期格式
?95??????*?@return
?96??????*/
?97?????public?static?String?format(Date?date,?String?pattern)?{
?98?????????String?returnValue?=?"";
?99?????????if?(date?!=?null)?{
100?????????????SimpleDateFormat?df?=?new?SimpleDateFormat(pattern);
101?????????????returnValue?=?df.format(date);
102?????????}
103?????????return?(returnValue);
104?????}
105?
106?????/**
107??????*?使用預設格式提取字符串日期
108??????*?@param?strDate?日期字符串
109??????*?@return
110??????*/
111?????public?static?Date?parse(String?strDate)?{
112?????????return?parse(strDate,?getDatePattern());
113?????}
114?
115?????/**
116??????*?使用用戶格式提取字符串日期
117??????*?@param?strDate?日期字符串
118??????*?@param?pattern?日期格式
119??????*?@return
120??????*/
121?????public?static?Date?parse(String?strDate,?String?pattern)?{
122?????????SimpleDateFormat?df?=?new?SimpleDateFormat(pattern);
123?????????try?{
124?????????????return?df.parse(strDate);
125?????????}?catch?(ParseException?e)?{
126?????????????e.printStackTrace();
127?????????????return?null;
128?????????}
129?????}
130?
131?????/**
132??????*?在日期上增加數個整月
133??????*?@param?date?日期
134??????*?@param?n?要增加的月數
135??????*?@return
136??????*/
137?????public?static?Date?addMonth(Date?date,?int?n)?{
138?????????Calendar?cal?=?Calendar.getInstance();
139?????????cal.setTime(date);
140?????????cal.add(Calendar.MONTH,?n);
141?????????return?cal.getTime();
142?????}
143?
144?????/**
145??????*?在日期上增加天數
146??????*?@param?date?日期
147??????*?@param?n?要增加的天數
148??????*?@return
149??????*/
150?????public?static?Date?addDay(Date?date,?int?n)?{
151?????????Calendar?cal?=?Calendar.getInstance();
152?????????cal.setTime(date);
153?????????cal.add(Calendar.DATE,?n);
154?????????return?cal.getTime();
155?????}
156?????
157?????/**
158??????*?獲取距現在某一小時的時刻
159??????*?@param?format?格式化時間的格式
160??????*?@param?h????距現在的小時?例如:h=-1為上一個小時,h=1為下一個小時
161??????*?@return
162??????*/
163?????public?static?String?getpreHour(String?format,?int?h){
164?????????SimpleDateFormat?sdf?=?new?SimpleDateFormat(format);
165?????????Date?date?=?new?Date();
166?????????date.setTime(date.getTime()+h*60*60*1000);
167?????????return?sdf.format(date);
168?????}
169?????/**
170??????*?獲取時間戳
171??????*/
172?????public?static?String?getTimeString()?{
173?????????SimpleDateFormat?df?=?new?SimpleDateFormat(FORMAT_FULL);
174?????????Calendar?calendar?=?Calendar.getInstance();
175?????????return?df.format(calendar.getTime());
176?????}
177?
178?????/**
179??????*?獲取日期年份
180??????*?@param?date?日期
181??????*?@return
182??????*/
183?????public?static?String?getYear(Date?date)?{
184?????????return?format(date).substring(0,?4);
185?????}
186?????/**
187??????*?功能描述:返回月
188??????*?
189??????*?@param?date
190??????*????????????Date?日期
191??????*?@return?返回月份
192??????*/
193?????public?static?int?getMonth(Date?date)?{
194?????????calendar?=?Calendar.getInstance();
195?????????calendar.setTime(date);
196?????????return?calendar.get(Calendar.MONTH)?+?1;
197?????}
198?
199?????/**
200??????*?功能描述:返回日
201??????*?
202??????*?@param?date
203??????*????????????Date?日期
204??????*?@return?返回日份
205??????*/
206?????public?static?int?getDay(Date?date)?{
207?????????calendar?=?Calendar.getInstance();
208?????????calendar.setTime(date);
209?????????return?calendar.get(Calendar.DAY_OF_MONTH);
210?????}
211?
212?????/**
213??????*?功能描述:返回小
214??????*?
215??????*?@param?date
216??????*????????????日期
217??????*?@return?返回小時
218??????*/
219?????public?static?int?getHour(Date?date)?{
220?????????calendar?=?Calendar.getInstance();
221?????????calendar.setTime(date);
222?????????return?calendar.get(Calendar.HOUR_OF_DAY);
223?????}
224?
225?????/**
226??????*?功能描述:返回分
227??????*?
228??????*?@param?date
229??????*????????????日期
230??????*?@return?返回分鐘
231??????*/
232?????public?static?int?getMinute(Date?date)?{
233?????????calendar?=?Calendar.getInstance();
234?????????calendar.setTime(date);
235?????????return?calendar.get(Calendar.MINUTE);
236?????}
237?
238?????/**
239??????*?返回秒鐘
240??????*?
241??????*?@param?date
242??????*????????????Date?日期
243??????*?@return?返回秒鐘
244??????*/
245?????public?static?int?getSecond(Date?date)?{
246?????????calendar?=?Calendar.getInstance();
247?????????calendar.setTime(date);
248?????????return?calendar.get(Calendar.SECOND);
249?????}
250?
251?????/**
252??????*?功能描述:返回毫
253??????*?
254??????*?@param?date
255??????*????????????日期
256??????*?@return?返回毫
257??????*/
258?????public?static?long?getMillis(Date?date)?{
259?????????calendar?=?Calendar.getInstance();
260?????????calendar.setTime(date);
261?????????return?calendar.getTimeInMillis();
262?????}
263?????/**
264??????*?按默認格式的字符串距離今天的天數
265??????*?@param?date?日期字符串
266??????*?@return
267??????*/
268?????public?static?int?countDays?(String?date)?{
269?????????long?t?=?Calendar.getInstance().getTime().getTime();
270?????????Calendar?c?=?Calendar.getInstance();
271?????????c.setTime(parse(date));
272?????????long?t1?=?c.getTime().getTime();
273?????????return?(int)(t/1000?-?t1/1000)/3600/24;
274?????}
275?????
276?????/**
277??????*?按用戶格式字符串距離今天的天數
278??????*?@param?date?日期字符串
279??????*?@param?format?日期格式
280??????*?@return
281??????*/
282?????public?static?int?countDays?(String?date,?String?format)?{
283?????????long?t?=?Calendar.getInstance().getTime().getTime();
284?????????Calendar?c?=?Calendar.getInstance();
285?????????c.setTime(parse(date,?format));
286?????????long?t1?=?c.getTime().getTime();
287?????????return?(int)(t/1000?-?t1/1000)/3600/24;
288?????}
289?
290?}
??2?
??3?import?java.text.DateFormat;
??4?import?java.text.ParseException;
??5?import?java.text.SimpleDateFormat;
??6?import?java.util.Calendar;
??7?import?java.util.Date;
??8?
??9?/**
?10??*?
?11??*?功能描述
?12??*?
?13??*?@author?Administrator
?14??*?@Date?Jul?19,?2008
?15??*?@Time?9:47:53?AM
?16??*?@version?1.0
?17??*/
?18?public?class?DateUtil?{
?19?
?20?????public?static?Date?date?=?null;
?21?
?22?????public?static?DateFormat?dateFormat?=?null;
?23?
?24?????public?static?Calendar?calendar?=?null;
?25?????
?26?????
?27?????/**
?28??????*?英文簡寫(默認)如:2010-12-01
?29??????*/
?30?????public?static?String?FORMAT_SHORT?=?"yyyy-MM-dd";
?31?????
?32?????/**
?33??????*?英文全稱??如:2010-12-01?23:15:06
?34??????*/
?35?????public?static?String?FORMAT_LONG?=?"yyyy-MM-dd?HH:mm:ss";
?36?????
?37?????/**
?38??????*?精確到毫秒的完整時間????如:yyyy-MM-dd?HH:mm:ss.S
?39??????*/
?40?????public?static?String?FORMAT_FULL?=?"yyyy-MM-dd?HH:mm:ss.S";
?41?????
?42?????/**
?43??????*?中文簡寫??如:2010年12月01日
?44??????*/
?45?????public?static?String?FORMAT_SHORT_CN?=?"yyyy年MM月dd";
?46?????
?47?????/**
?48??????*?中文全稱??如:2010年12月01日??23時15分06秒
?49??????*/
?50?????public?static?String?FORMAT_LONG_CN?=?"yyyy年MM月dd日??HH時mm分ss秒";
?51?????
?52?????/**
?53??????*?精確到毫秒的完整中文時間
?54??????*/
?55?????public?static?String?FORMAT_FULL_CN?=?"yyyy年MM月dd日??HH時mm分ss秒SSS毫秒";
?56?
?57?????/**
?58??????*?獲得默認的?date?pattern
?59??????*/
?60?????public?static?String?getDatePattern()?{
?61?????????return?FORMAT_LONG;
?62?????}
?63?
?64?????/**
?65??????*?根據預設格式返回當前日期
?66??????*?@return
?67??????*/
?68?????public?static?String?getNow()?{
?69?????????return?format(new?Date());
?70?????}
?71?????
?72?????/**
?73??????*?根據用戶格式返回當前日期
?74??????*?@param?format
?75??????*?@return
?76??????*/
?77?????public?static?String?getNow(String?format)?{
?78?????????return?format(new?Date(),?format);
?79?????}
?80?
?81?????
?82?????/**
?83??????*?使用預設格式格式化日期
?84??????*?@param?date
?85??????*?@return
?86??????*/
?87?????public?static?String?format(Date?date)?{
?88?????????return?format(date,?getDatePattern());
?89?????}
?90?
?91?????/**
?92??????*?使用用戶格式格式化日期
?93??????*?@param?date?日期
?94??????*?@param?pattern?日期格式
?95??????*?@return
?96??????*/
?97?????public?static?String?format(Date?date,?String?pattern)?{
?98?????????String?returnValue?=?"";
?99?????????if?(date?!=?null)?{
100?????????????SimpleDateFormat?df?=?new?SimpleDateFormat(pattern);
101?????????????returnValue?=?df.format(date);
102?????????}
103?????????return?(returnValue);
104?????}
105?
106?????/**
107??????*?使用預設格式提取字符串日期
108??????*?@param?strDate?日期字符串
109??????*?@return
110??????*/
111?????public?static?Date?parse(String?strDate)?{
112?????????return?parse(strDate,?getDatePattern());
113?????}
114?
115?????/**
116??????*?使用用戶格式提取字符串日期
117??????*?@param?strDate?日期字符串
118??????*?@param?pattern?日期格式
119??????*?@return
120??????*/
121?????public?static?Date?parse(String?strDate,?String?pattern)?{
122?????????SimpleDateFormat?df?=?new?SimpleDateFormat(pattern);
123?????????try?{
124?????????????return?df.parse(strDate);
125?????????}?catch?(ParseException?e)?{
126?????????????e.printStackTrace();
127?????????????return?null;
128?????????}
129?????}
130?
131?????/**
132??????*?在日期上增加數個整月
133??????*?@param?date?日期
134??????*?@param?n?要增加的月數
135??????*?@return
136??????*/
137?????public?static?Date?addMonth(Date?date,?int?n)?{
138?????????Calendar?cal?=?Calendar.getInstance();
139?????????cal.setTime(date);
140?????????cal.add(Calendar.MONTH,?n);
141?????????return?cal.getTime();
142?????}
143?
144?????/**
145??????*?在日期上增加天數
146??????*?@param?date?日期
147??????*?@param?n?要增加的天數
148??????*?@return
149??????*/
150?????public?static?Date?addDay(Date?date,?int?n)?{
151?????????Calendar?cal?=?Calendar.getInstance();
152?????????cal.setTime(date);
153?????????cal.add(Calendar.DATE,?n);
154?????????return?cal.getTime();
155?????}
156?????
157?????/**
158??????*?獲取距現在某一小時的時刻
159??????*?@param?format?格式化時間的格式
160??????*?@param?h????距現在的小時?例如:h=-1為上一個小時,h=1為下一個小時
161??????*?@return
162??????*/
163?????public?static?String?getpreHour(String?format,?int?h){
164?????????SimpleDateFormat?sdf?=?new?SimpleDateFormat(format);
165?????????Date?date?=?new?Date();
166?????????date.setTime(date.getTime()+h*60*60*1000);
167?????????return?sdf.format(date);
168?????}
169?????/**
170??????*?獲取時間戳
171??????*/
172?????public?static?String?getTimeString()?{
173?????????SimpleDateFormat?df?=?new?SimpleDateFormat(FORMAT_FULL);
174?????????Calendar?calendar?=?Calendar.getInstance();
175?????????return?df.format(calendar.getTime());
176?????}
177?
178?????/**
179??????*?獲取日期年份
180??????*?@param?date?日期
181??????*?@return
182??????*/
183?????public?static?String?getYear(Date?date)?{
184?????????return?format(date).substring(0,?4);
185?????}
186?????/**
187??????*?功能描述:返回月
188??????*?
189??????*?@param?date
190??????*????????????Date?日期
191??????*?@return?返回月份
192??????*/
193?????public?static?int?getMonth(Date?date)?{
194?????????calendar?=?Calendar.getInstance();
195?????????calendar.setTime(date);
196?????????return?calendar.get(Calendar.MONTH)?+?1;
197?????}
198?
199?????/**
200??????*?功能描述:返回日
201??????*?
202??????*?@param?date
203??????*????????????Date?日期
204??????*?@return?返回日份
205??????*/
206?????public?static?int?getDay(Date?date)?{
207?????????calendar?=?Calendar.getInstance();
208?????????calendar.setTime(date);
209?????????return?calendar.get(Calendar.DAY_OF_MONTH);
210?????}
211?
212?????/**
213??????*?功能描述:返回小
214??????*?
215??????*?@param?date
216??????*????????????日期
217??????*?@return?返回小時
218??????*/
219?????public?static?int?getHour(Date?date)?{
220?????????calendar?=?Calendar.getInstance();
221?????????calendar.setTime(date);
222?????????return?calendar.get(Calendar.HOUR_OF_DAY);
223?????}
224?
225?????/**
226??????*?功能描述:返回分
227??????*?
228??????*?@param?date
229??????*????????????日期
230??????*?@return?返回分鐘
231??????*/
232?????public?static?int?getMinute(Date?date)?{
233?????????calendar?=?Calendar.getInstance();
234?????????calendar.setTime(date);
235?????????return?calendar.get(Calendar.MINUTE);
236?????}
237?
238?????/**
239??????*?返回秒鐘
240??????*?
241??????*?@param?date
242??????*????????????Date?日期
243??????*?@return?返回秒鐘
244??????*/
245?????public?static?int?getSecond(Date?date)?{
246?????????calendar?=?Calendar.getInstance();
247?????????calendar.setTime(date);
248?????????return?calendar.get(Calendar.SECOND);
249?????}
250?
251?????/**
252??????*?功能描述:返回毫
253??????*?
254??????*?@param?date
255??????*????????????日期
256??????*?@return?返回毫
257??????*/
258?????public?static?long?getMillis(Date?date)?{
259?????????calendar?=?Calendar.getInstance();
260?????????calendar.setTime(date);
261?????????return?calendar.getTimeInMillis();
262?????}
263?????/**
264??????*?按默認格式的字符串距離今天的天數
265??????*?@param?date?日期字符串
266??????*?@return
267??????*/
268?????public?static?int?countDays?(String?date)?{
269?????????long?t?=?Calendar.getInstance().getTime().getTime();
270?????????Calendar?c?=?Calendar.getInstance();
271?????????c.setTime(parse(date));
272?????????long?t1?=?c.getTime().getTime();
273?????????return?(int)(t/1000?-?t1/1000)/3600/24;
274?????}
275?????
276?????/**
277??????*?按用戶格式字符串距離今天的天數
278??????*?@param?date?日期字符串
279??????*?@param?format?日期格式
280??????*?@return
281??????*/
282?????public?static?int?countDays?(String?date,?String?format)?{
283?????????long?t?=?Calendar.getInstance().getTime().getTime();
284?????????Calendar?c?=?Calendar.getInstance();
285?????????c.setTime(parse(date,?format));
286?????????long?t1?=?c.getTime().getTime();
287?????????return?(int)(t/1000?-?t1/1000)/3600/24;
288?????}
289?
290?}