码迷,mamicode.com
首页 > 其他好文 > 详细

DateUtils

时间:2014-11-12 22:46:10      阅读:640      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   color   ar   os   使用   java   

  1 package com.gootrip.util;
  2 
  3 /**
  4  * <p>Title: 时间和日期的工具类</p>
  5  * <p>Description: DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法</p>
  6  * <p>Copyright: Copyright (c) 2007 advance,Inc. All Rights Reserved</p>
  7  * <p>Company: advance,Inc.</p>
  8  * @author advance
  9  * @version 1.0
 10  */
 11 import java.text.DateFormat;
 12 import java.text.ParseException;
 13 import java.text.SimpleDateFormat;
 14 import java.util.Calendar;
 15 import java.util.Date;
 16 import java.util.GregorianCalendar;
 17 
 18 public class DateUtil {
 19     //~ Static fields/initializers =============================================
 20 
 21     private static String datePattern = "MM/dd/yyyy";
 22 
 23     private static String timePattern = datePattern + " HH:MM a";
 24 
 25     //~ Methods ================================================================
 26 
 27     /**
 28      * Return default datePattern (MM/dd/yyyy)
 29      * @return a string representing the date pattern on the UI
 30      */
 31     public static String getDatePattern() {
 32         return datePattern;
 33     }
 34 
 35     /**
 36      * This method attempts to convert an Oracle-formatted date
 37      * in the form dd-MMM-yyyy to mm/dd/yyyy.
 38      *
 39      * @param aDate date from database as a string
 40      * @return formatted string for the ui
 41      */
 42     public static final String getDate(Date aDate) {
 43         SimpleDateFormat df = null;
 44         String returnValue = "";
 45 
 46         if (aDate != null) {
 47             df = new SimpleDateFormat(datePattern);
 48             returnValue = df.format(aDate);
 49         }
 50 
 51         return (returnValue);
 52     }
 53 
 54     public static final String date2Str(Date aDate) {
 55         SimpleDateFormat df = null;
 56         String returnValue = "";
 57 
 58         if (aDate != null) {
 59             df = new SimpleDateFormat(datePattern);
 60             returnValue = df.format(aDate);
 61         }
 62 
 63         return (returnValue);
 64     }
 65 
 66     public static final String date2Str(String pattern, Date aDate) {
 67         SimpleDateFormat df = null;
 68         String returnValue = "";
 69 
 70         if (aDate != null) {
 71             df = new SimpleDateFormat(pattern);
 72             returnValue = df.format(aDate);
 73         }
 74         return (returnValue);
 75     }
 76 
 77     /**
 78      * This method generates a string representation of a date/time
 79      * in the format you specify on input
 80      *
 81      * @param aMask the date pattern the string is in
 82      * @param strDate a string representation of a date
 83      * @return a converted Date object
 84      * @see java.text.SimpleDateFormat
 85      * @throws ParseException
 86      */
 87     public static final Date convertStringToDate(String aMask, String strDate)
 88             throws ParseException {
 89         SimpleDateFormat df = null;
 90         Date date = null;
 91         df = new SimpleDateFormat(aMask);
 92 
 93         try {
 94             date = df.parse(strDate);
 95         } catch (ParseException pe) {
 96             return null;
 97         }
 98 
 99         return (date);
100     }
101 
102     public static final Date str2Date(String aMask, String strDate)
103             throws ParseException {
104         SimpleDateFormat df = null;
105         Date date = null;
106         df = new SimpleDateFormat(aMask);
107 
108         try {
109             date = df.parse(strDate);
110         } catch (ParseException pe) {
111             return null;
112         }
113 
114         return (date);
115     }
116 
117     /**
118      * This method returns the current date time in the format:
119      * MM/dd/yyyy HH:MM a
120      *
121      * @param theTime the current time
122      * @return the current date/time
123      */
124     public static String getTimeNow(Date theTime) {
125         return getDateTime(timePattern, theTime);
126     }
127 
128     /**
129      * This method returns the current date in the format: MM/dd/yyyy
130      *
131      * @return the current date
132      * @throws ParseException
133      */
134     public static Calendar getToday() throws ParseException {
135         Date today = new Date();
136         SimpleDateFormat df = new SimpleDateFormat(datePattern);
137 
138         // This seems like quite a hack (date -> string -> date),
139         // but it works ;-)
140         String todayAsString = df.format(today);
141         Calendar cal = new GregorianCalendar();
142         cal.setTime(convertStringToDate(todayAsString));
143 
144         return cal;
145     }
146 
147     /**
148      * This method generates a string representation of a date‘s date/time
149      * in the format you specify on input
150      *
151      * @param aMask the date pattern the string is in
152      * @param aDate a date object
153      * @return a formatted string representation of the date
154      *
155      * @see java.text.SimpleDateFormat
156      */
157     public static final String getDateTime(String aMask, Date aDate) {
158         SimpleDateFormat df = null;
159         String returnValue = "";
160 
161         if (aDate == null) {
162             System.out.print("aDate is null!");
163         } else {
164             df = new SimpleDateFormat(aMask);
165             returnValue = df.format(aDate);
166         }
167 
168         return (returnValue);
169     }
170 
171     /**
172      * This method generates a string representation of a date based
173      * on the System Property ‘dateFormat‘
174      * in the format you specify on input
175      *
176      * @param aDate A date to convert
177      * @return a string representation of the date
178      */
179     public static final String convertDateToString(Date aDate) {
180         return getDateTime(datePattern, aDate);
181     }
182 
183     /**
184      * This method converts a String to a date using the datePattern
185      *
186      * @param strDate the date to convert (in format MM/dd/yyyy)
187      * @return a date object
188      *
189      * @throws ParseException
190      */
191     public static Date convertStringToDate(String strDate)
192             throws ParseException {
193         Date aDate = null;
194 
195         try {
196 
197             aDate = convertStringToDate(datePattern, strDate);
198         } catch (ParseException pe) {
199             //log.error("Could not convert ‘" + strDate
200             //          + "‘ to a date, throwing exception");
201             pe.printStackTrace();
202             return null;
203 
204         }
205         return aDate;
206     }
207 
208     //日期格式转换成时间戳
209     public static long getTimeStamp(String pattern, String strDate) {
210         long returnTimeStamp = 0;
211         Date aDate = null;
212         try {
213             aDate = convertStringToDate(pattern, strDate);
214         } catch (ParseException pe) {
215             aDate = null;
216         }
217         if (aDate == null) {
218             returnTimeStamp = 0;
219         } else {
220             returnTimeStamp = aDate.getTime();
221         }
222         return returnTimeStamp;
223     }
224 
225     //获取当前日期的邮戳
226     public static long getNowTimeStamp() {
227         long returnTimeStamp = 0;
228         Date aDate = null;
229         try {
230             aDate = convertStringToDate("yyyy-MM-dd HH:mm:ss", getNowDateTime());
231         } catch (ParseException pe) {
232             aDate = null;
233         }
234         if (aDate == null) {
235             returnTimeStamp = 0;
236         } else {
237             returnTimeStamp = aDate.getTime();
238         }
239         return returnTimeStamp;
240     }
241 
242     /**
243      *得到格式化后的系统当前日期
244      *@param strScheme 格式模式字符串
245      *@return 格式化后的系统当前时间,如果有异常产生,返回空串""
246      *@see java.util.SimpleDateFormat
247      */
248     public static final String getNowDateTime(String strScheme) {
249         String strReturn = null;
250         Date now = new Date();
251         try {
252             SimpleDateFormat sdf = new SimpleDateFormat(strScheme);
253             strReturn = sdf.format(now);
254         } catch (Exception e) {
255             strReturn = "";
256         }
257         return strReturn;
258     }
259 
260     public static final String getNowDateTime() {
261         String strReturn = null;
262         Date now = new Date();
263         try {
264             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
265             strReturn = sdf.format(now);
266         } catch (Exception e) {
267             strReturn = "";
268         }
269         return strReturn;
270     }
271 
272     /**
273      *转化日期格式"MM/dd/YY、MM.dd.YY、MM-dd-YY、MM/dd/YY",并输出为正常的格式yyyy-MM-dd
274      *@param strDate 待转换的日期格式
275      *@return 格式化后的日期,如果有异常产生,返回空串""
276      *@see java.util.SimpleDateFormat
277      */
278     public static final String convertNormalDate(String strDate) {
279         String strReturn = null;
280         //先把传入参数分格符转换成java认识的分格符
281         String[] date_arr = strDate.split("\\.|\\/|\\-");
282         try {
283             if (date_arr.length == 3) {
284                 if (date_arr[2].length() != 4) {
285                     String nowYear = getNowDateTime("yyyy");
286                     date_arr[2] = nowYear.substring(0, 2) + date_arr[2];
287                 }
288                 strReturn = DateUtil.getDateTime("yyyy-MM-dd",
289                         convertStringToDate(combineStringArray(date_arr, "/")));
290             }
291 
292         } catch (Exception e) {
293             return strReturn;
294         }
295         return strReturn;
296     }
297 
298     /**
299      * 将字符串数组使用指定的分隔符合并成一个字符串。
300      * @param array 字符串数组
301      * @param delim 分隔符,为null的时候使用""作为分隔符(即没有分隔符)
302      * @return 合并后的字符串
303      * @since  0.4
304      */
305     public static final String combineStringArray(String[] array, String delim) {
306         int length = array.length - 1;
307         if (delim == null) {
308             delim = "";
309         }
310         StringBuffer result = new StringBuffer(length * 8);
311         for (int i = 0; i < length; i++) {
312             result.append(array[i]);
313             result.append(delim);
314         }
315         result.append(array[length]);
316         return result.toString();
317     }
318 
319     public static final int getWeekNum(String strWeek) {
320         int returnValue = 0;
321         if (strWeek.equals("Mon")) {
322             returnValue = 1;
323         } else if (strWeek.equals("Tue")) {
324             returnValue = 2;
325         } else if (strWeek.equals("Wed")) {
326             returnValue = 3;
327         } else if (strWeek.equals("Thu")) {
328             returnValue = 4;
329         } else if (strWeek.equals("Fri")) {
330             returnValue = 5;
331         } else if (strWeek.equals("Sat")) {
332             returnValue = 6;
333         } else if (strWeek.equals("Sun")) {
334             returnValue = 0;
335         } else if (strWeek == null) {
336             returnValue = 0;
337         }
338 
339         return returnValue;
340     }
341     /**
342      * 获取日期字符串中的中文时间表示字符串
343      * @param strDate
344      * @return
345      */
346     public static final String getSabreTime(String strDate) {
347         String strReturn = "";
348         try {
349 
350             Date d = DateUtil.str2Date("yyyy-MM-dd HH:mm:ss", CTool.replace(
351                     strDate, "T", " "));
352             strReturn = DateUtil.date2Str("hh:mm aaa", d);
353 
354         } catch (Exception e) {
355             return strReturn;
356         }
357         return strReturn;
358     }
359     /**
360      * 获取日期字符串中的中文日期表示字符串
361      * @param strDate
362      * @return
363      */
364     public static final String getSabreDate(String strDate) {
365         String strReturn = "";
366         try {
367             String p = null;
368             if (strDate.length() > 10)
369                 p = "yyyy-MM-dd HH:mm:ss";
370             else
371                 p = "yyyy-MM-dd";
372             Date d = DateUtil.str2Date(p, CTool.replace(strDate, "T", " "));
373             strReturn = DateUtil.date2Str("EEE d-MMM", d);
374 
375         } catch (Exception e) {
376             return strReturn;
377         }
378         return strReturn;
379     }
380     /**
381      * 获取日期字符串的中文日期时间表示
382      * @param strDate
383      * @return
384      */
385     public static final String getSabreDateTime(String strDate) {
386         String strReturn = "";
387         try {
388             String p = null;
389             if (strDate.length() > 10)
390                 p = "yyyy-MM-dd HH:mm:ss";
391             else
392                 p = "yyyy-MM-dd";
393             Date d = DateUtil.str2Date(p, CTool.replace(strDate, "T", " "));
394             strReturn = DateUtil.date2Str("EEE d-MMM hh:mm aaa", d);
395 
396         } catch (Exception e) {
397             return strReturn;
398         }
399         return strReturn;
400     }
401 
402     /**
403      *得到格式化后的指定日期
404      *@param strScheme 格式模式字符串
405      *@param date 指定的日期值
406      *@return 格式化后的指定日期,如果有异常产生,返回空串""
407      *@see java.util.SimpleDateFormat
408      */
409     public static final String getDateTime(Date date, String strScheme) {
410         String strReturn = null;
411         try {
412             SimpleDateFormat sdf = new SimpleDateFormat(strScheme);
413             strReturn = sdf.format(date);
414         } catch (Exception e) {
415             strReturn = "";
416         }
417 
418         return strReturn;
419     }
420     /**
421      * 获取日期
422      * @param timeType 时间类型,譬如:Calendar.DAY_OF_YEAR
423      * @param timenum  时间数字,譬如:-1 昨天,0 今天,1 明天
424      * @return 日期
425      */
426     public static final Date getDateFromNow(int timeType, int timenum){
427         Calendar cld = Calendar.getInstance();
428         cld.set(timeType, cld.get(timeType) + timenum);
429         return cld.getTime();
430     }
431     /**
432      * 获取日期
433      * @param timeType 时间类型,譬如:Calendar.DAY_OF_YEAR
434      * @param timenum  时间数字,譬如:-1 昨天,0 今天,1 明天
435      * @param format_string 时间格式,譬如:"yyyy-MM-dd HH:mm:ss"
436      * @return 字符串
437      */
438     public static final String getDateFromNow(int timeType, int timenum, String format_string){
439         if ((format_string == null)||(format_string.equals("")))
440             format_string = "yyyy-MM-dd HH:mm:ss";
441         Calendar cld = Calendar.getInstance();
442         Date date = null;
443         DateFormat df = new SimpleDateFormat(format_string);
444         cld.set(timeType, cld.get(timeType) + timenum);
445         date = cld.getTime();
446         return df.format(date);
447     }
448     /**
449      * 获取当前日期的字符串
450      * @param format_string 时间格式,譬如:"yyyy-MM-dd HH:mm:ss"
451      * @return 字符串
452      */
453     public static final String getDateNow(String format_string){
454         if ((format_string == null)||(format_string.equals("")))
455             format_string = "yyyy-MM-dd HH:mm:ss";
456         Calendar cld = Calendar.getInstance();
457         DateFormat df = new SimpleDateFormat(format_string);
458         return df.format(cld.getTime());
459     }
460 
461 }

 

DateUtils

标签:des   style   blog   io   color   ar   os   使用   java   

原文地址:http://www.cnblogs.com/leorain/p/4093637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!