import java.text.DateFormat; |
import java.text.ParseException; |
import java.text.SimpleDateFormat; |
import java.util.Calendar; |
import java.util.Date; |
/** |
* |
* 日期时间工具类 |
* |
* 功能: |
* 获取当前日期 时间 ,获取年月日时分秒毫秒 |
* 格式化日期时间 |
* 日期时间加上或减少n天、n月、n年 |
* 计算日期相差的天数 |
* |
* @author Administrator |
* @Date Jul 19, 2008 |
* @Time 9:47:53 AM |
* @version 1.0 |
*/ |
public class DateUtil { |
public static Date date = null ; |
public static DateFormat dateFormat = null ; |
public static Calendar calendar = null ; |
/** |
* 英文简写(默认)如:2010-12-01 |
*/ |
public static String FORMAT_SHORT = "yyyy-MM-dd" ; |
/** |
* 英文全称 如:2010-12-01 23:15:06 |
*/ |
public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss" ; |
/** |
* 精确到毫秒的完整时间 如:yyyy-MM-dd HH:mm:ss.S |
*/ |
public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S" ; |
/** |
* 中文简写 如:2010年12月01日 |
*/ |
public static String FORMAT_SHORT_CN = "yyyy年MM月dd" ; |
/** |
* 中文全称 如:2010年12月01日 23时15分06秒 |
*/ |
public static String FORMAT_LONG_CN = "yyyy年MM月dd日 HH时mm分ss秒" ; |
/** |
* 精确到毫秒的完整中文时间 |
*/ |
public static String FORMAT_FULL_CN = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" ; |
/** |
* 获得默认的 date pattern |
*/ |
public static String getDatePattern() { |
return FORMAT_LONG; |
} |
/** |
* 根据预设格式返回当前日期 |
* |
* @return |
*/ |
public static String getNow() { |
return format( new Date()); |
} |
/** |
* 根据用户格式返回当前日期 |
* |
* @param format |
* @return |
*/ |
public static String getNow(String format) { |
return format( new Date(), format); |
} |
/** |
* 使用预设格式格式化日期 |
* |
* @param date |
* @return |
*/ |
public static String format(Date date) { |
return format(date, getDatePattern()); |
} |
/** |
* 使用用户格式格式化日期 |
* |
* @param date |
* 日期 |
* @param pattern |
* 日期格式 |
* @return |
*/ |
public static String format(Date date, String pattern) { |
String returnValue = "" ; |
if (date != null ) { |
SimpleDateFormat df = new SimpleDateFormat(pattern); |
returnValue = df.format(date); |
} |
return (returnValue); |
} |
/** |
* 使用预设格式提取字符串日期 |
* |
* @param strDate |
* 日期字符串 |
* @return |
*/ |
public static Date parse(String strDate) { |
return parse(strDate, getDatePattern()); |
} |
/** |
* 使用用户格式提取字符串日期 |
* |
* @param strDate |
* 日期字符串 |
* @param pattern |
* 日期格式 |
* @return |
*/ |
public static Date parse(String strDate, String pattern) { |
SimpleDateFormat df = new SimpleDateFormat(pattern); |
try { |
return df.parse(strDate); |
} catch (ParseException e) { |
e.printStackTrace(); |
return null ; |
} |
} |
/** |
* 在日期上增加数个整月 |
* |
* @param date |
* 日期 |
* @param n |
* 要增加的月数 |
* @return |
*/ |
public static Date addMonth(Date date, int n) { |
Calendar cal = Calendar.getInstance(); |
cal.setTime(date); |
cal.add(Calendar.MONTH, n); |
return cal.getTime(); |
} |
/** |
* 在日期上增加天数 |
* |
* @param date |
* 日期 |
* @param n |
* 要增加的天数 |
* @return |
*/ |
public static Date addDay(Date date, int n) { |
Calendar cal = Calendar.getInstance(); |
cal.setTime(date); |
cal.add(Calendar.DATE, n); |
return cal.getTime(); |
} |
/** |
* 获取距现在某一小时的时刻 |
* |
* @param format |
* 格式化时间的格式 |
* @param h |
* 距现在的小时 例如:h=-1为上一个小时,h=1为下一个小时 |
* @return |
*/ |
public static String getpreHour(String format, int h) { |
SimpleDateFormat sdf = new SimpleDateFormat(format); |
Date date = new Date(); |
date.setTime(date.getTime() + h * 60 * 60 * 1000 ); |
return sdf.format(date); |
} |
/** |
* 获取时间戳 |
*/ |
public static String getTimeString() { |
SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL); |
Calendar calendar = Calendar.getInstance(); |
return df.format(calendar.getTime()); |
} |
/** |
* 获取日期年份 |
* |
* @param date |
* 日期 |
* @return |
*/ |
public static String getYear(Date date) { |
return format(date).substring( 0 , 4 ); |
} |
/** |
* 功能描述:返回月 |
* |
* @param date |
* Date 日期 |
* @return 返回月份 |
*/ |
public static int getMonth(Date date) { |
calendar = Calendar.getInstance(); |
calendar.setTime(date); |
return calendar.get(Calendar.MONTH) + 1 ; |
} |
/** |
* 功能描述:返回日 |
* |
* @param date |
* Date 日期 |
* @return 返回日份 |
*/ |
public static int getDay(Date date) { |
calendar = Calendar.getInstance(); |
calendar.setTime(date); |
return calendar.get(Calendar.DAY_OF_MONTH); |
} |
/** |
* 功能描述:返回小 |
* |
* @param date |
* 日期 |
* @return 返回小时 |
*/ |
public static int getHour(Date date) { |
calendar = Calendar.getInstance(); |
calendar.setTime(date); |
return calendar.get(Calendar.HOUR_OF_DAY); |
} |
/** |
* 功能描述:返回分 |
* |
* @param date |
* 日期 |
* @return 返回分钟 |
*/ |
public static int getMinute(Date date) { |
calendar = Calendar.getInstance(); |
calendar.setTime(date); |
return calendar.get(Calendar.MINUTE); |
} |
/** |
* 返回秒钟 |
* |
* @param date |
* Date 日期 |
* @return 返回秒钟 |
*/ |
public static int getSecond(Date date) { |
calendar = Calendar.getInstance(); |
calendar.setTime(date); |
return calendar.get(Calendar.SECOND); |
} |
/** |
* 功能描述:返回毫 |
* |
* @param date |
* 日期 |
* @return 返回毫 |
*/ |
public static long getMillis(Date date) { |
calendar = Calendar.getInstance(); |
calendar.setTime(date); |
return calendar.getTimeInMillis(); |
} |
/** |
* 按默认格式的字符串距离今天的天数 |
* |
* @param date |
* 日期字符串 |
* @return |
*/ |
public static int countDays(String date) { |
long t = Calendar.getInstance().getTime().getTime(); |
Calendar c = Calendar.getInstance(); |
c.setTime(parse(date)); |
long t1 = c.getTime().getTime(); |
return ( int ) (t / 1000 - t1 / 1000 ) / 3600 / 24 ; |
} |
/** |
* 按用户格式字符串距离今天的天数 |
* |
* @param date |
* 日期字符串 |
* @param format |
* 日期格式 |
* @return |
*/ |
public static int countDays(String date, String format) { |
long t = Calendar.getInstance().getTime().getTime(); |
Calendar c = Calendar.getInstance(); |
c.setTime(parse(date, format)); |
long t1 = c.getTime().getTime(); |
return ( int ) (t / 1000 - t1 / 1000 ) / 3600 / 24 ; |
} |
public static void main(String[] args) { |
System.out.println(DateUtil.getNow()); |
} |
} |