package cn.com.css.common.util;
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar;
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;
/** * 用于处理JAVA中的DATE型数据的转换 * * @version 1.0 */ public class DateUtil {
private static Log log = LogFactory.getLog(DateUtil.class);
private static String datePattern = "yyyy-MM-dd";
private static String timePattern = "HH:mm:ss";
/** * Return 缺省的日期格式 (yyyy-MM-dd) * * @return 在页面中显示的日期格式 */ public static String getDatePattern() { return datePattern; }
/** * Return 缺省的时间格式 (HH:mm:ss) * * @return 在页面中显示的日期格式 */ public static final String getTimePattern() { return timePattern; }
/** * Return 缺省的日期+时间格式 (yyyy-MM-dd HH:mm:ss) * * @return 在页面中显示的日期格式 */ public static final String getDateTimePattern() { return datePattern + " " + timePattern; }
/** * 按照日期格式,将字符串解析为日期对象 * * @param aMask * 输入字符串的格式 * @param strDate * 按aMask格式排列的日期的字符串描述 * @return Date 对象 * * @throws ParseException */ public static final Date convertStringToDate(String aMask, String strDate) { SimpleDateFormat df = null; Date chgDate = null; try { df = new SimpleDateFormat(aMask); chgDate = df.parse(strDate); } catch (ParseException pe) { log.error("from string convert to date is error :" + pe.getMessage()); } return chgDate; }
/** * 按照日期格式,将字符串解析为日期对象.格式'yyyy-mm-dd HH:mm:ss' * * @param strDate * 按aMask格式排列的日期的字符串描述 * @return Date 对象 */ public static final Date convertStringToDate(String strDate) { return convertStringToDate(getDateTimePattern(), strDate); }
/** * 按照日期格式,将日期对象解析为字符串 * * @param aMask * 输入字符串的格式 * @param aDate * 按aMask格式排列的日期对象 * @return String 字符串 * * @throws ParseException */ public static String convertDateToString(String aMask, Date aDate) { SimpleDateFormat df = null; try { df = new SimpleDateFormat(aMask); } catch (Exception ex) { log.error("from date convert to string is error :" + ex.getMessage()); } return df.format(aDate); }
/** * 按照日期格式,将日期对象解析为字符串.格式'yyyy-mm-dd HH:mm:ss' * * @param strDate * 按aMask格式排列的日期的字符串描述 * @return Date 对象 */ public static final String convertDateToString(Date aDate) { return convertDateToString(getDateTimePattern(), aDate); }
/** * 返回当前日期 * * @param aMask * 日期格式 * * @return */ public static String getLocalDateTime(String aMask) { SimpleDateFormat df = new SimpleDateFormat(aMask); String returnValue = df.format(new Date()); return returnValue; }
/** * 返回当前日期,格式'yyyy-mm-dd' * * @return */ public static String getLocalDate() { return getLocalDateTime(getDatePattern()); }
/** * 返回当前时间,格式'yyyy-mm-dd HH:mm:ss' * * @return */ public static final String getLocalDateTime() { return getLocalDateTime(getDateTimePattern()); }
/** * 返回当前日期 * * @param aMask * 日期格式 * * @return */ public static Date loadLocalDateTime(String aMask) { return convertStringToDate(aMask, getLocalDateTime(aMask)); }
/** * 返回当前日期,格式'yyyy-mm-dd' * * @return */ public static Date loadLocalDate() { return loadLocalDateTime(getDatePattern()); }
/** * 返回当前时间,格式'yyyy-mm-dd HH:mm:ss' * * @return */ public static final Date loadLocalDateTime() { return loadLocalDateTime(getDateTimePattern()); }
/** * 得到日历对象Calendar,格式:yyyy-MM-dd * * @return the current date * @throws ParseException */ public static Calendar getCalendar() throws ParseException { Date today = new Date(); SimpleDateFormat df = new SimpleDateFormat(datePattern); String todayAsString = df.format(today); Calendar cal = new GregorianCalendar(); cal.setTime(convertStringToDate(getDatePattern(), todayAsString)); return cal; }
public static String getYear() { Date date = new Date(); return convertDateToString("yyyy", date); }
public static String getMonth() { Date date = new Date(); return convertDateToString("MM", date); }
public static String getDay() { Date date = new Date(); return convertDateToString("dd", date); }
/** * 日期增大 * * @param date * Date * @param field * int 1年 2月 3周 5天 * @param amount * int 增加数量 * @return Date */ public static Date addDate(Date date, int field, int amount) { GregorianCalendar gc = new GregorianCalendar(); gc.setTime(date); gc.add(field, amount); return gc.getTime(); }
/** * 得到Calendar的TimeInMilli * * @param date * @return */ public static long getMillis(Date date) { if (date != null) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.getTimeInMillis(); } else { return 0; } }
/** * 日期相减 * * @param date * Date * @param day * int * @return Date */ public static Date diffDate(Date date, int day) { if (date != null) { Calendar c = Calendar.getInstance(); long iLong = getMillis(date) - ((long) day) * 24 * 3600 * 1000; c.setTimeInMillis(iLong); return c.getTime(); } else { return new Date(); } }
/** * 得到一年当中的星期 * * @param date * @return */ public static String getWeekOfYearByString(Date date) { if (date != null) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(7); c.setTime(date); int week = c.get(Calendar.WEEK_OF_YEAR); if (week > 9) { return convertDateToString("yyyy", date) + week; } else { return convertDateToString("yyyy", date) + "0" + week; } } else { return null; } }
/** * 获取某月的第一天,或最后一天 * * @param date * Date * @param flag * boolean true为第一天 false为最后一天 * @return String */ public static final String getDateByMonth(Date date, boolean flag) { Calendar cal = Calendar.getInstance(); cal.setTime(date); int i = 0; if (flag) { i = cal.getActualMinimum(Calendar.DAY_OF_MONTH); } else { i = cal.getActualMaximum(Calendar.DAY_OF_MONTH); } if (i > 9) { return i + ""; } else { return "0" + i; } }
/** * 获取某周的第一天,或最后一天 * * @param year * int * @param week * int * @param flag * boolean true为第一天 false为最后一天 * @return Date */ public static Date getDateByWeek(int year, int week, boolean flag) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.WEEK_OF_YEAR, week); calendar.set(Calendar.DAY_OF_WEEK, 7); // 得到今天是星期几,星期日为1 int datInWeek = calendar.get(Calendar.DAY_OF_WEEK); System.out.println(datInWeek); // Clone一个新的 Calendar calendar1 = (Calendar) calendar.clone(); if (flag) { calendar.add(Calendar.DAY_OF_MONTH, -(datInWeek - 2)); return calendar.getTime(); } else { calendar1.add(Calendar.DAY_OF_MONTH, 7 - datInWeek); return addDate(calendar.getTime(), 5, 1); } }
/** * 日期计算 * * @param date * 起始日期 * @param yearNum * 年增减数 * @param monthNum * 月增减数 * @param dateNum * 日增减数 */ public static String calDate(String date, int yearNum, int monthNum, int dateNum) { String result = ""; try { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(sd.parse(date)); cal.add(Calendar.MONTH, monthNum); cal.add(Calendar.YEAR, yearNum); cal.add(Calendar.DATE, dateNum); result = sd.format(cal.getTime()); } catch (Exception e) { e.printStackTrace(); } return result; }
/** * 得到系统时间数字:1260168985734 * * @return */ public static long getLongTime() { return System.currentTimeMillis(); }
/** * 得到系统时间数字:1260168985734 * * @return */ public static String getLongDate() { long d = System.currentTimeMillis(); return String.valueOf(d); }
/** * 当天开始时间 * * @return * @attention * @author 涂作权 * @date 2013-10-13 * @note begin modify by 涂作权 2013-10-13 获得一天的开始时间 */ public static Date getStartTimeOfDay() { Calendar calendar = new GregorianCalendar(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); }
/** * 当天的结束时间 * * @return * @attention * @author 涂作权 * @date 2013-10-13 * @note begin modify by 涂作权 2013-10-13 添加一天的最后时间 */ public static Date getEndTimeOfDay() { Calendar calendar = new GregorianCalendar(); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); return calendar.getTime(); }
/** * \brief 将long的数据变成Date类型,进而变成String类型 * * @param dateFormat 日期格式 * @param millSec 毫秒值 * @return * @attention * @author 涂作权 * @date 2014-2-21 * @note begin modify by null */ public static String transferLongToDate(String dateFormat, long millSec) { SimpleDateFormat sf = new SimpleDateFormat(dateFormat); Date date = new Date(millSec); return sf.format(date); } }
相关资源:DateUtils(日期工具类)