DateUtil

package com.gootrip.util;


/**
 * <p>Title: 时间和日期的工具类</p>
 * <p>Description: DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法</p>
 * <p>Copyright: Copyright (c) 2007 advance,Inc. All Rights Reserved</p>
 * <p>Company: advance,Inc.</p>
 * @author advance
 * @version 1.0
 */
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;


public class DateUtil {
//~ Static fields/initializers =============================================


private static String datePattern = "MM/dd/yyyy";


private static String timePattern = datePattern + " HH:MM a";


//~ Methods ================================================================


/**
* Return default datePattern (MM/dd/yyyy)
* @return a string representing the date pattern on the UI
*/
public static String getDatePattern() {
return datePattern;
}


/**
* This method attempts to convert an Oracle-formatted date
* in the form dd-MMM-yyyy to mm/dd/yyyy.
*
* @param aDate date from database as a string
* @return formatted string for the ui
*/
public static final String getDate(Date aDate) {
SimpleDateFormat df = null;
String returnValue = "";


if (aDate != null) {
df = new SimpleDateFormat(datePattern);
returnValue = df.format(aDate);
}


return (returnValue);
}


public static final String date2Str(Date aDate) {
SimpleDateFormat df = null;
String returnValue = "";


if (aDate != null) {
df = new SimpleDateFormat(datePattern);
returnValue = df.format(aDate);
}


return (returnValue);
}


public static final String date2Str(String pattern, Date aDate) {
SimpleDateFormat df = null;
String returnValue = "";


if (aDate != null) {
df = new SimpleDateFormat(pattern);
returnValue = df.format(aDate);
}
return (returnValue);
}


/**
* This method generates a string representation of a date/time
* in the format you specify on input
*
* @param aMask the date pattern the string is in
* @param strDate a string representation of a date
* @return a converted Date object
* @see java.text.SimpleDateFormat
* @throws ParseException
*/
public static final Date convertStringToDate(String aMask, String strDate)
throws ParseException {
SimpleDateFormat df = null;
Date date = null;
df = new SimpleDateFormat(aMask);


try {
date = df.parse(strDate);
} catch (ParseException pe) {
return null;
}


return (date);
}


public static final Date str2Date(String aMask, String strDate)
throws ParseException {
SimpleDateFormat df = null;
Date date = null;
df = new SimpleDateFormat(aMask);


try {
date = df.parse(strDate);
} catch (ParseException pe) {
return null;
}


return (date);
}


/**
* This method returns the current date time in the format:
* MM/dd/yyyy HH:MM a
*
* @param theTime the current time
* @return the current date/time
*/
public static String getTimeNow(Date theTime) {
return getDateTime(timePattern, theTime);
}


/**
* This method returns the current date in the format: MM/dd/yyyy
*
* @return the current date
* @throws ParseException
*/
public static Calendar getToday() throws ParseException {
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat(datePattern);


// This seems like quite a hack (date -> string -> date),
// but it works ;-)
String todayAsString = df.format(today);
Calendar cal = new GregorianCalendar();
cal.setTime(convertStringToDate(todayAsString));


return cal;
}


/**
* This method generates a string representation of a date's date/time
* in the format you specify on input
*
* @param aMask the date pattern the string is in
* @param aDate a date object
* @return a formatted string representation of the date
*
* @see java.text.SimpleDateFormat
*/
public static final String getDateTime(String aMask, Date aDate) {
SimpleDateFormat df = null;
String returnValue = "";


if (aDate == null) {
System.out.print("aDate is null!");
} else {
df = new SimpleDateFormat(aMask);
returnValue = df.format(aDate);
}


return (returnValue);
}


/**
* This method generates a string representation of a date based
* on the System Property 'dateFormat'
* in the format you specify on input
*
* @param aDate A date to convert
* @return a string representation of the date
*/
public static final String convertDateToString(Date aDate) {
return getDateTime(datePattern, aDate);
}


/**
* This method converts a String to a date using the datePattern
*
* @param strDate the date to convert (in format MM/dd/yyyy)
* @return a date object
*
* @throws ParseException
*/
public static Date convertStringToDate(String strDate)
throws ParseException {
Date aDate = null;


try {


aDate = convertStringToDate(datePattern, strDate);
} catch (ParseException pe) {
//log.error("Could not convert '" + strDate
//          + "' to a date, throwing exception");
pe.printStackTrace();
return null;


}
return aDate;
}


//日期格式转换成时间戳
public static long getTimeStamp(String pattern, String strDate) {
long returnTimeStamp = 0;
Date aDate = null;
try {
aDate = convertStringToDate(pattern, strDate);
} catch (ParseException pe) {
aDate = null;
}
if (aDate == null) {
returnTimeStamp = 0;
} else {
returnTimeStamp = aDate.getTime();
}
return returnTimeStamp;
}


//获取当前日期的邮戳
public static long getNowTimeStamp() {
long returnTimeStamp = 0;
Date aDate = null;
try {
aDate = convertStringToDate("yyyy-MM-dd HH:mm:ss", getNowDateTime());
} catch (ParseException pe) {
aDate = null;
}
if (aDate == null) {
returnTimeStamp = 0;
} else {
returnTimeStamp = aDate.getTime();
}
return returnTimeStamp;
}


/**
*得到格式化后的系统当前日期
*@param strScheme 格式模式字符串
*@return 格式化后的系统当前时间,如果有异常产生,返回空串""
*@see java.util.SimpleDateFormat
*/
public static final String getNowDateTime(String strScheme) {
String strReturn = null;
Date now = new Date();
try {
SimpleDateFormat sdf = new SimpleDateFormat(strScheme);
strReturn = sdf.format(now);
} catch (Exception e) {
strReturn = "";
}
return strReturn;
}


public static final String getNowDateTime() {
String strReturn = null;
Date now = new Date();
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
strReturn = sdf.format(now);
} catch (Exception e) {
strReturn = "";
}
return strReturn;
}


/**
*转化日期格式"MM/dd/YY、MM.dd.YY、MM-dd-YY、MM/dd/YY",并输出为正常的格式yyyy-MM-dd
*@param strDate 待转换的日期格式
*@return 格式化后的日期,如果有异常产生,返回空串""
*@see java.util.SimpleDateFormat
*/
public static final String convertNormalDate(String strDate) {
String strReturn = null;
//先把传入参数分格符转换成java认识的分格符
String[] date_arr = strDate.split("\\.|\\/|\\-");
try {
if (date_arr.length == 3) {
if (date_arr[2].length() != 4) {
String nowYear = getNowDateTime("yyyy");
date_arr[2] = nowYear.substring(0, 2) + date_arr[2];
}
strReturn = DateUtil.getDateTime("yyyy-MM-dd",
convertStringToDate(combineStringArray(date_arr, "/")));
}


} catch (Exception e) {
return strReturn;
}
return strReturn;
}


/**
* 将字符串数组使用指定的分隔符合并成一个字符串。
* @param array 字符串数组
* @param delim 分隔符,为null的时候使用""作为分隔符(即没有分隔符)
* @return 合并后的字符串
* @since  0.4
*/
public static final String combineStringArray(String[] array, String delim) {
int length = array.length - 1;
if (delim == null) {
delim = "";
}
StringBuffer result = new StringBuffer(length * 8);
for (int i = 0; i < length; i++) {
result.append(array[i]);
result.append(delim);
}
result.append(array[length]);
return result.toString();
}


public static final int getWeekNum(String strWeek) {
int returnValue = 0;
if (strWeek.equals("Mon")) {
returnValue = 1;
} else if (strWeek.equals("Tue")) {
returnValue = 2;
} else if (strWeek.equals("Wed")) {
returnValue = 3;
} else if (strWeek.equals("Thu")) {
returnValue = 4;
} else if (strWeek.equals("Fri")) {
returnValue = 5;
} else if (strWeek.equals("Sat")) {
returnValue = 6;
} else if (strWeek.equals("Sun")) {
returnValue = 0;
} else if (strWeek == null) {
returnValue = 0;
}


return returnValue;
}
/**
* 获取日期字符串中的中文时间表示字符串
* @param strDate
* @return
*/
public static final String getSabreTime(String strDate) {
String strReturn = "";
try {


Date d = DateUtil.str2Date("yyyy-MM-dd HH:mm:ss", CTool.replace(
strDate, "T", " "));
strReturn = DateUtil.date2Str("hh:mm aaa", d);


} catch (Exception e) {
return strReturn;
}
return strReturn;
}
/**
* 获取日期字符串中的中文日期表示字符串
* @param strDate
* @return
*/
public static final String getSabreDate(String strDate) {
String strReturn = "";
try {
String p = null;
if (strDate.length() > 10)
p = "yyyy-MM-dd HH:mm:ss";
else
p = "yyyy-MM-dd";
Date d = DateUtil.str2Date(p, CTool.replace(strDate, "T", " "));
strReturn = DateUtil.date2Str("EEE d-MMM", d);


} catch (Exception e) {
return strReturn;
}
return strReturn;
}
/**
* 获取日期字符串的中文日期时间表示
* @param strDate
* @return
*/
public static final String getSabreDateTime(String strDate) {
String strReturn = "";
try {
String p = null;
if (strDate.length() > 10)
p = "yyyy-MM-dd HH:mm:ss";
else
p = "yyyy-MM-dd";
Date d = DateUtil.str2Date(p, CTool.replace(strDate, "T", " "));
strReturn = DateUtil.date2Str("EEE d-MMM hh:mm aaa", d);


} catch (Exception e) {
return strReturn;
}
return strReturn;
}


/**
*得到格式化后的指定日期
*@param strScheme 格式模式字符串
*@param date 指定的日期值
*@return 格式化后的指定日期,如果有异常产生,返回空串""
*@see java.util.SimpleDateFormat
*/
public static final String getDateTime(Date date, String strScheme) {
String strReturn = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(strScheme);
strReturn = sdf.format(date);
} catch (Exception e) {
strReturn = "";
}


return strReturn;
}
/**
* 获取日期
* @param timeType 时间类型,譬如:Calendar.DAY_OF_YEAR
* @param timenum  时间数字,譬如:-1 昨天,0 今天,1 明天
* @return 日期
*/
public static final Date getDateFromNow(int timeType, int timenum){
Calendar cld = Calendar.getInstance();
cld.set(timeType, cld.get(timeType) + timenum);
return cld.getTime();
}
/**
* 获取日期
* @param timeType 时间类型,譬如:Calendar.DAY_OF_YEAR
* @param timenum  时间数字,譬如:-1 昨天,0 今天,1 明天
* @param format_string 时间格式,譬如:"yyyy-MM-dd HH:mm:ss"
* @return 字符串
*/
public static final String getDateFromNow(int timeType, int timenum, String format_string){
if ((format_string == null)||(format_string.equals("")))
format_string = "yyyy-MM-dd HH:mm:ss";
Calendar cld = Calendar.getInstance();
Date date = null;
   DateFormat df = new SimpleDateFormat(format_string);
cld.set(timeType, cld.get(timeType) + timenum);
   date = cld.getTime();
   return df.format(date);
}
/**
* 获取当前日期的字符串
* @param format_string 时间格式,譬如:"yyyy-MM-dd HH:mm:ss"
* @return 字符串
*/
public static final String getDateNow(String format_string){
if ((format_string == null)||(format_string.equals("")))
format_string = "yyyy-MM-dd HH:mm:ss";
Calendar cld = Calendar.getInstance();
   DateFormat df = new SimpleDateFormat(format_string);
   return df.format(cld.getTime());
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值