DateUtils



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);
 }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值