package com.ace.backoffice.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.xml.datatype.DatatypeConfigurationException;import javax.xml.datatype.DatatypeFactory;import javax.xml.datatype.XMLGregorianCalendar;public class DateUtils {/** * 將指定字串轉換成日期 * * @param date * String 日期文字 * @param datePattern * String 日期格式 * @return Date */public static java.util.Date getFormatDate(String date, String datePattern) {SimpleDateFormat sd = new SimpleDateFormat(datePattern);return sd.parse(date, new java.text.ParsePosition(0));}/** * 將指定日期對象轉換成格式化字串 * * @param date * Date XML日期對象 * @param datePattern * String 日期格式 * @return String */public static String getFormattedString(Date date, String datePattern) {SimpleDateFormat sd = new SimpleDateFormat(datePattern);return sd.format(date);}/** * 將指定XML日期對象轉換成格式化字串 * * @param xmlDate * Date XML日期對象 * @param datePattern * String 日期格式 * @return String */public static String getFormattedString(XMLGregorianCalendar xmlDate,String datePattern) {SimpleDateFormat sd = new SimpleDateFormat(datePattern);Calendar calendar = xmlDate.toGregorianCalendar();return sd.format(calendar.getTime());}/** * 將指定XML日期對象轉換成日期對象 * * @param xmlDate * Date XML日期對象 * @param datePattern * String 日期格式 * @return Date */public static Date xmlGregorianCalendar2Date(XMLGregorianCalendar xmlDate) {return xmlDate.toGregorianCalendar().getTime();}public static String getThisYear() {// 獲得當前日期Calendar cldCurrent = Calendar.getInstance();// 獲得年月日String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));return strYear;}public static XMLGregorianCalendar convert2XMLCalendar(Calendar calendar) {try {DatatypeFactory dtf = DatatypeFactory.newInstance();return dtf.newXMLGregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH)+1,calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND),calendar.get(Calendar.MILLISECOND),calendar.get(Calendar.ZONE_OFFSET)/(1000*60));} catch (DatatypeConfigurationException e) {e.printStackTrace();return null;}}// 擷取當天時間public static java.sql.Timestamp getNowTime(String dateformat) {Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式String dateString = dateFormat.format(now);SimpleDateFormat sd = new SimpleDateFormat(dateformat);Date dateFormt = sd.parse(dateString, new java.text.ParsePosition(0));java.sql.Timestamp dateTime = new java.sql.Timestamp(dateFormt.getTime());return dateTime;// return hehe;}// 擷取指定時間public static java.sql.Timestamp getNowNewTime(String date,String dateformat){ //Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);//可以方便地修改日期格式 dateFormat.parse(date, new java.text.ParsePosition(0)); // String dateString= dateFormat.format(date); Date dateFormt= dateFormat.parse(date, new java.text.ParsePosition(0)); java.sql.Timestamp dateTime = new java.sql.Timestamp(dateFormt.getTime()); return dateTime; // return hehe; }/** * @param 含有yyyy-MM-dd'T'hh:mm:ss.SSS格式的時間轉換. * @return */public static String getTFormatString(String tdate) {SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");String str ="";try {java.util.Date date = format1.parse(tdate);SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); str = format2.format(date);} catch (ParseException e) {e.printStackTrace();}return str;}public static void main(String[] args) {SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd");String date = "20110202";System.out.println(sd.parse(date, new java.text.ParsePosition(0)));System.out.println(getBefore2HourDate());}//擷取目前時間前2個小時的時間。public static String getBefore2HourDate(){SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Calendar c = Calendar.getInstance(); c.add(Calendar.HOUR_OF_DAY, -2); // 目前時間加3小時 return df.format(c.getTime());}/** * * @param time1 目前時間 * @param time2 比較時間 * @return 如果time1比time2大gap分鐘,則返回true; */public static boolean compareDateTime(Date time1, Date time2, int gap) {return time1.getTime() - time2.getTime() > gap * 60 * 1000;}}