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

时间: 2024-09-20 00:49:09

DateUtils的相关文章

DateUtils.IsPM

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses DateUtil

dateutils 0.1.5rc1发布 时间&日期工具

Dateutils是一个工具包,用于旋转命令行上使用的日期和时间,可以处理大量的财务数据. dateutils 0.1.5rc1版本添加类似grep的工具,dgrep日期值和时间值tgrep,添加到信息页面和自述的例子. 软件信息:http://hroptatyr.github.com/dateutils/ 下载地址:http://cloud.github.com/downloads/hroptatyr/dateutils/dateutils-0.1.5rc1.tar.xz

JAVA导出EXCEL并下载

JAVA导出EXCEL并下载 一 ,流程大致如下 1.JSP页面点击按钮 2.点击导出excel按钮 3.点击确定按钮 (1)在谷歌浏览器中会直接下载 (2)在ie浏览器会提示保存路径 4.最后下载保存到本地,打开Excel表格,效果如下. 二,下面来看具体代码 前端js代码 function exportExcel() { $.messager.confirm('确认', '确认把该搜索结果导出Excel表格 ?', function(r) { if (r) { var startTime =

Delphi高精度计时方法

//取毫秒级时间精度(方法一): var t1,t2:int64; r1:int64; begin t1:=GetTickCount;//获取开始计数 WINDOWS API sleep(1000);{do...}//执行要计时的代码 t2:=GetTickCount;//获取结束计数值 r1:=t2-t1;//取得计时时间,Y`国4~络(}.u_%t"hV单位毫秒(ms) showmessage(inttostr(r1)); end; //取毫秒级时间精度(方法二): //use DateUt

Java:Web应用下实现定时任务的简便方法

web|定时 在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 public class TaskManager implements ServletContextListener { /**  * 每天的毫秒数  */ public static final long P

Java知识:Web应用下实现定时任务简便方法

web|定时 在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 以下是引用片段: public class TaskManager implements ServletContextListener { /** * 每天的毫秒数 */ public static final

Delphi获取格林威治时间并转换到北京时间

uses Winapi.msxml, System.DateUtils; //实时获取网络时间的函数, 得到的是格林威治时间; 默认从 sohu 服务器获取, 因为它最快, 平均只需 15 毫秒function GetNetTime(aUrl: WideString = 'http://www.sohu.com'): string; begin with CoXMLHTTP.Create do beginopen('Post', aUrl, False, EmptyParam, EmptyPar

Delphi中的DateUtils-Function

DateUtils.CompareDate DateUtils.CompareDateTime DateUtils.CompareTime DateUtils.DateOf DateUtils.DateTimeToJulianDate DateUtils.DateTimeToModifiedJulianDate DateUtils.DateTimeToUnix DateUtils.DayOf DateUtils.DayOfTheMonth DateUtils.DayOfTheWeek DateU

EncodeDateTime ... TryEncodeDateTime ... 构建时间

SysUtils.EncodeDateTime SysUtils.EncodeDate SysUtils.EncodeTime DateUtils.EncodeDateDay DateUtils.EncodeDateMonthWeek DateUtils.EncodeDateTime DateUtils.EncodeDateWeek DateUtils.EncodeDayOfWeekInMonth DateUtils.TryEncodeDateTime DateUtils.TryEncodeDa