开发者博客:www.developsearch.com
[code="java"]/**
* 日期工具类
*
* @author chenxin
* @version [版本号, 2012-5-21]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class DateUtil {
/**
* 默认的格式:yyyy-MM-dd
*/
public static final String PATTERN_DEFAULT = "yyyy-MM-dd";
public static final String FORMAT_STANDARD = "yyyy-MM-dd HH:mm:ss";
public static final String FORMAT_YYYYMMDD = "yyyyMMdd";
public static final String FORMAT_YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static final String CHINESE_SHORT_DATE = "yyyy年M月d日";
private static final String[] weekDays = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
/**
* 转换日期格式
* @param dateStr 日期字符串
* @param src 日期源格式
* @param dest 日期转后后的目标格式
* @return
* 转换格式后的日期字符串
* @throws ParseException 如果格式转换失败,则抛出异常
*/
public static String changeDateStrFormate(String dateStr, String src,
String dest) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat(src);
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat(dest);
return sdf.format(date);
}
/**
* 将字符串转换为Date类型
* @param dateStr 日期字符串
* @param pattern 格式
* @return Date对象
* @throws ParseException 当进行格式化的时候失败,抛出该异常。
*/
public static Date getDateByString(String dateStr, String pattern) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.parse(dateStr);
}
/**
* 将Date类型转换为String类型
* @param date 日期
* @param pattern 格式
* @return 日期对应格式的字符串
* @throws ParseException
* 当格式转换出现异常,抛出
*/
public static String getStringByDate(Date date, String pattern) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 判断两个日期是否为同年同月
*
* @param date1 date1
* @param date2 date2
* @return boolean
* @see [类、类#方法、类#成员]
*/
public static boolean isSameYYYYMM(Date date1, Date date2)
{
Calendar c1 = Calendar.getInstance();
c1.setTime(date1);
Calendar c2 = Calendar.getInstance();
c2.setTime(date2);
return (c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR)) && (c1.get(Calendar.MONTH) == c2.get(Calendar.MONTH));
}
/**
* 返回当前是本年度的第几周
*
* @param date
* @return int [返回类型说明]
*/
public static int getWeekNumOfYear(Date date)
{
Calendar c = Calendar.getInstance();
c.setTime(date);
c.setFirstDayOfWeek(Calendar.MONDAY);
return c.get(Calendar.WEEK_OF_YEAR);
}
/**
* date转timestamp类型
*/
public static Timestamp convertDate2TStamp(Date date)
{
if (null == date)
{
return null;
}
return new Timestamp(date.getTime());
}
/**
* 以分钟为单位对时间进行调整
*
* @param time 要调整的时间
* @param minite 增加的分钟数
*
* @return String 调整后的时间
*/
public static String addMinute(String time, int minite)
{
if (StringUtils.isEmpty(time))
{
return "";
}
Calendar calendar = Calendar.getInstance();
DateFormat dateFormat = new SimpleDateFormat(FORMAT_STANDARD);
Date date = null;
try
{
date = dateFormat.parse(time);
}
catch (ParseException e)
{
return "";
}
calendar.setTimeInMillis(date.getTime());
calendar.add(Calendar.MINUTE, minite);
return dateFormat.format(calendar.getTime());
}
/**
* 以分钟为单位对时间进行调整
*
* @param time 要调整的时间
* @param minite 增加的分钟数
*
* @return String 调整后的时间
*/
public static Date addMinute(Date requestTime, int minite)
{
if (null == requestTime)
{
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(requestTime.getTime());
calendar.add(Calendar.MINUTE, minite);
return calendar.getTime();
}
/**
* 获取几天前的日期
*
* @param days
* @return [参数说明]
*
* @return Date [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public static Date getBeforeDateInDay(int days)
{
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -days);
return calendar.getTime();
}
/**
* yyyy-MM-ddTHH:mm:ss.SSSzzzzz格式字符串转换成日期类型
*
* @param s 要转换的字符串
* @param errorMessage 转换失败时的信息
* @return 转换后的日期
*/
public static Date xmlDateTimeStr2XMLDateTime(String s, String errorMessage)
{
if ((s == null) || "".equals(s.trim()))
{
return null;
}
else
{
try
{
XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(s);
return calendar.toGregorianCalendar().getTime();
}
catch (Exception e)
{
return null;
}
}
}
/**
* 日期类型转换成yyyy-MM-ddTHH:mm:ss.SSSzzzzz格式字符串
*
* @param date Date日期
* @param errorMessage 转换失败时的信息
* @return String型字符串
*/
public static String xmlDateTime2xmlDateTimeStr(Date date, String errorMessage)
{
if (date == null)
{
return errorMessage;
}
else
{
Calendar ca = Calendar.getInstance();
ca.setTime(date);
XMLGregorianCalendar calendar = null;
try
{
calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar((GregorianCalendar)ca);
}
catch (Exception e)
{
return errorMessage;
}
return calendar.toString();
}
}
/**
* 得到当前格林威治的日期和时间
*
* @return String
*/
public static String getUTCDateTime()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone tz = TimeZone.getTimeZone("Etc/UTC");
sdf.setTimeZone(tz);
Calendar calendar = Calendar.getInstance();
return sdf.format(calendar.getTime());
}
/**
*
* @param date
* @param date2
* @return date2-date的天数
*/
public static long getDaysInterval(Date date, Date date2) {
return (date2.getTime() - date.getTime()) / 86400000;
}
public static java.sql.Timestamp getTimestamp(){
return java.sql.Timestamp.valueOf(getNowDateTime());
}
/**
* @param days
* @return 和当前相差days天的日期
*/
public static String getDate(int days) {
Date date = new Date();
date.setTime(date.getTime() + 86400000L * days);
return date2string(date);
}
/**
*
* @param date
* @return date对应的年
*/
public static int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}
public static int getNowYear() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.YEAR);
}
/**
*
* @param date
* @return date对应的月
*/
public static int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
}
public static int getNowMonth() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.MONTH) + 1;
}
/**
*
* @param date
* @return 对应的天
*/
public static int getDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_MONTH);
}
public static int getNowDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.DAY_OF_MONTH);
}
/**
* 根据日期算年龄
* @param Date 出生日期
*/
public static int yearOLD(Date birthDay)
{
Calendar sysCalendar=Calendar.getInstance();
Calendar birCalendar=Calendar.getInstance();
birCalendar.setTime(birthDay);
if(sysCalendar.get(Calendar.MONTH)>birCalendar.get(Calendar.MONTH))
return sysCalendar.get(Calendar.YEAR)-birCalendar.get(Calendar.YEAR)+1;
else
return sysCalendar.get(Calendar.YEAR)-birCalendar.get(Calendar.YEAR);
}
/**
* 格式化今日中文短日期
*
* @return
*/
public static final String formatChineseShortToday() {
SimpleDateFormat sdf = new SimpleDateFormat(CHINESE_SHORT_DATE);
return sdf.format(new Date());
}
/**
* 得到中文星期
*
* @return
*/
public static final String getChineseWeekDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return weekDays[c.get(Calendar.DAY_OF_WEEK)];
}
/**
* 日期天数增加
*
* @param date
* @param days
* @return
*/
public static Date addDays(Date date, int days) {
if (checkPara(date)) {
return null;
}
if (0 == days) {
return date;
}
Locale loc = Locale.getDefault();
Calendar cal = new GregorianCalendar(loc);
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, days);
return cal.getTime();
}
/**
* 日期天数减少
*
* @param date
* @param days
* @return
*/
public static Date minusDays(Date date, int days) {
return addDays(date, (0 - days));
}
/**
* 按时间格式相加
*
* @param dateStr
* 原来的时间
* @param pattern
* 时间格式
* @param type
* "year"年、"month"月、"day"日、"week"周、 "hour"时、"minute"分、"second"秒
* 通过常量来设置,e.g.DateFormatUtil.YEAR
* @param count
* 相加数量
* @return
*/
public static String addDate(String dateStr, String pattern, String type,
int count) {
if (checkPara(dateStr) || checkPara(pattern) || checkPara(type)) {
return "";
}
if (0 == count) {
return dateStr;
}
Date date = parseStrToCustomPatternDate(dateStr, pattern);
Locale loc = Locale.getDefault();
Calendar cal = new GregorianCalendar(loc);
cal.setTime(date);
if (DateFormatUtil.YEAR.equals(type)) {
cal.add(Calendar.YEAR, count);
} else if (DateFormatUtil.MONTH.equals(type)) {
cal.add(Calendar.MONTH, count);
} else if (DateFormatUtil.DAY.equals(type)) {
cal.add(Calendar.DAY_OF_MONTH, count);
} else if (DateFormatUtil.WEEK.equals(type)) {
cal.add(Calendar.WEEK_OF_MONTH, count);
} else if (DateFormatUtil.HOUR.equals(type)) {
cal.add(Calendar.HOUR, count);
} else if (DateFormatUtil.MINUTE.equals(type)) {
cal.add(Calendar.MINUTE, count);
} else if (DateFormatUtil.SECOND.equals(type)) {
cal.add(Calendar.SECOND, count);
} else {
return "";
}
return formatDate(cal.getTime(), pattern);
}
/**
* 那时间格式相减
*
* @param dateStr
* @param pattern
* @param type
* @param count
* @return
*/
public static String minusDate(String dateStr, String pattern, String type,
int count) {
return addDate(dateStr, pattern, type, (0 - count));
}
/**
* 日期大小比较
*
* @param dateStr1
* @param dateStr2
* @param pattern
* @return
*/
public static int compareDate(String dateStr1, String dateStr2,
String pattern) {
if (checkPara(dateStr1) || checkPara(dateStr2) || checkPara(pattern)) {
return 888;
}
Date date1 = DateFormatUtil.parseStrToCustomPatternDate(dateStr1,
pattern);
Date date2 = DateFormatUtil.parseStrToCustomPatternDate(dateStr2,
pattern);
return date1.compareTo(date2);
}
/**
* 获得这个月的第一天
*
* @param dateStr
* @return
*/
public static String getFirstDayInMonth(String dateStr) {
if (checkPara(dateStr)) {
return "";
}
Calendar cal = DateFormatUtil.parseStrToCalendar(dateStr);
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, firstDay);
return DateFormatUtil.formatDate(cal.getTime(),
DateFormatUtil.DATE_FORMAT);
}
/**
* 判断是不是当月的第一天
* @param dateStr
* @return
*/
public static boolean isFirstDayInMonth(String dateStr){
if (checkPara(dateStr)) {
return false;
}
Calendar cal = DateFormatUtil.parseStrToCalendar(dateStr);
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, firstDay);
String day = DateFormatUtil.formatDate(cal.getTime(),
DateFormatUtil.DATE_FORMAT);
if (dateStr.equals(day)) {
return true;
}
return false;
}
/**
* 判断是不是当月的最后一天
* @param dateStr
* @return
*/
public static boolean islastDayInMonth(String dateStr){
if (checkPara(dateStr)) {
return false;
}
Calendar cal = DateFormatUtil.parseStrToCalendar(dateStr);
int firstDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, firstDay);
String day = DateFormatUtil.formatDate(cal.getTime(), DateFormatUtil.DATE_FORMAT);
if (dateStr.equals(day)) {
return true;
}
return false;
}
/**
* 获得这个月的最后一天
*
* @param dateStr
* @return
*/
public static String getLastDayInMonth(String dateStr) {
if (checkPara(dateStr)) {
return "";
}
Calendar cal = DateFormatUtil.parseStrToCalendar(dateStr);
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, lastDay);
return DateFormatUtil.formatDate(cal.getTime(),
DateFormatUtil.DATE_FORMAT);
}
/**
* 获得这周的第一天
*
* @param dateStr
* @return
*/
public static String getFirstDayInWeek(String dateStr) {
if (checkPara(dateStr)) {
return "";
}
Calendar cal = DateFormatUtil.parseStrToCalendar(dateStr);
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_WEEK);
cal.set(Calendar.DAY_OF_WEEK, firstDay);
return DateFormatUtil.formatDate(cal.getTime(),
DateFormatUtil.DATE_FORMAT);
}
/**
* 获得这周的最后一天
*
* @param dateStr
* @return
*/
public static String getLastDayInWeek(String dateStr) {
if (checkPara(dateStr)) {
return "";
}
Calendar cal = DateFormatUtil.parseStrToCalendar(dateStr);
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_WEEK);
cal.set(Calendar.DAY_OF_WEEK, lastDay);
return DateFormatUtil.formatDate(cal.getTime(),
DateFormatUtil.DATE_FORMAT);
}
/**
* 获取指定日期的周的第一天
* @param dateStr
* @return
* @throws Exception
*/
public static String firstDay(String dateStr) throws Exception{
if (dateStr == null) {
return null;
}
Calendar cal = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat(DATE_FORMAT);
Date date = convertStringToDate(dateStr);
cal.setTime(date);
int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 2;
cal.add(Calendar.DATE, -day_of_week);
return sf.format(cal.getTime());
}
/**
* 获取指定日期的周的最后一天
*
*/
public static String lastDay(String dateStr)throws Exception{
if (dateStr==null) {
return null;
}
Calendar cal = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat(DATE_FORMAT);
cal.setTime(convertStringToDate(dateStr));
cal.add(Calendar.DATE, 6);
return sf.format(cal.getTime());
}
public static String firstMonth(String dateStr)throws Exception{
if (dateStr==null) {
return null;
}
Calendar cal = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat(DATE_FORMAT);
cal.setTime(convertStringToDate(dateStr));
cal.set(GregorianCalendar.DAY_OF_MONTH, 1);
return sf.format(cal.getTime());
}
/**
* 获取本月第最后一天
* @param dateStr
* @return
* @throws Exception
*/
public static String lastMonth(String dateStr) throws Exception{
if (dateStr==null) {
return null;
}
Calendar cal = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat(DATE_FORMAT);
cal.setTime(convertStringToDate(dateStr));
cal.set( Calendar.DATE, 1 );
cal.roll(Calendar.DATE, - 1 );
return sf.format(cal.getTime());
}
/**
* 获取当前月份所在季度
* @param dateStr
* @return
* @throws Exception
*/
public static Map<String,String> getSeason(String dateStr) throws Exception{
if (dateStr==null) {
return null;
}
Map<String,String> map = new HashMap<String,String>();
String array[][] = {{"01","03"},{"04","06"},{"07","09"},{"10","12"}};
SimpleDateFormat month = new SimpleDateFormat("MM");
SimpleDateFormat year = new SimpleDateFormat("yyyy");
Date date = convertStringToDate(dateStr);
int season=Integer.valueOf (month.format(date));
String years = year.format(date);
String beginSeason = null;
String endSeason = null;
if (season>=1&&season<=3) {
beginSeason = array[0][0];
endSeason = array[0][1];
}
if (season>=4&&season<=6) {
beginSeason = array[1][0];
endSeason = array[1][1];
}
if (season>=7&&season<=9) {
beginSeason = array[2][0];
endSeason = array[2][1];
}
if (season>=10&&season<=12) {
beginSeason = array[3][0];
endSeason = array[3][1];
}
map.put("beginSeason", years+"-"+beginSeason);
map.put("endSeason", years+"-"+endSeason);
return map;
}
/**
* 比较两个日期相差的天数
*
* @param fDate
* @param oDate
* @return
*/
public static int getIntervalDays(Date fDate, Date oDate) {
if (null == fDate || null == oDate) {
return -1;
}
long intervalMilli = oDate.getTime() - fDate.getTime();
return (int) (intervalMilli / (24 * 60 * 60 * 1000));
}
/**
* 比较2个时间相差的分钟数
*
* @param fDate
* @param oDate
* @return
*/
public static int getIntervalMinutes(Date fDate, Date oDate){
if (null == fDate || null == oDate) {
return -1;
}
long intervalMilli = oDate.getTime() - fDate.getTime();
return (int) (intervalMilli / (60 * 1000));
}
/**
* 获得一个月的最后一天
* @param date 指定日期
* @return 该月的最后一天
*/
protected Date getLastDayOfMonth(Date date)
{
Date tempDate = DateUtils.truncate(date, Calendar.DATE);
Calendar cal = DateUtils.toCalendar(tempDate);
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));
return cal.getTime();
}
/**
* 获得一个月的第一天
* @param date 指定日期
* @return 该月的最后一天
*/
protected Date getFirstDayOfMonth(Date date)
{
Date tempDate = DateUtils.truncate(date, Calendar.DATE);
return DateUtils.setDays(tempDate, 1);
}
/**
* 获得某个日期指定的一天
* @param date 指定日期
* @return 该月的最后一天
*/
protected Date getCustomDay(Date date, int day)
{
Date tempDate = DateUtils.truncate(date, Calendar.DATE);
return DateUtils.setDays(tempDate, day);
}
}[/code]
相关推荐
在Java编程语言中,`DateUtil`通常是一个自定义的工具类,用于处理与日期和时间相关的操作。这个工具类可以极大地简化日期处理任务,提供比Java内置的`java.util.Date`和`java.time`包更友好的API。在本文中,我们将...
标题中的"PyPI 官网下载 | types-python-dateutil-0.1.4.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`types-python-dateutil`,版本为0.1.4,其打包形式是tar.gz。PyPI是Python社区广泛...
在Java编程中,DateUtil是一个常见的工具类,用于处理日期和时间相关的操作。这个类通常包含了一系列静态方法,便于开发者进行日期格式化、日期比较、日期计算等常见任务。下面我们将详细探讨DateUtil中的关键知识点...
Python的`dateutil`模块是Python编程中处理日期和时间的一个强大工具,尤其适用于解析不规则的日期字符串和处理各种时间间隔。在64位操作系统上使用时,它提供了与32位系统相同的功能,但可以处理更大的数据范围。本...
Python的`dateutil`模块是Python标准库`datetime`模块的一个强大扩展,它提供了一系列高级的时间解析和计算功能。在OpenERP7(现称为Odoo7)开发中,`dateutil`模块扮演了重要的角色,因为它能帮助开发者处理复杂的...
`DateUtil`类通常被设计为一个工具类,用于提供方便、高效和灵活的日期处理功能。这个类集成了多种方法,帮助开发者进行日期格式化、获取当前时间等操作。下面我们将深入探讨`DateUtil`类可能包含的一些核心知识点。...
DateUtil 日期工具类
在处理日期和时间以及解析复杂字符串时,Python提供了多个工具包,其中“dateUtil”和“pyparsing”是两个非常实用的库。 “dateUtil”库,全称为“python-dateutil”,是一个强大的扩展,用于处理日期和时间。它...
标题中的"numpy+matplotlib+six+dateutil+pytz+pyparsing.zip"是一个包含多个Python第三方库的压缩包,适用于Python 2.7版本,并且是针对Windows 7 64位系统的。这个压缩包里的每个子文件都是一个单独的安装程序,...
python源码安装包python-dateutil-2.8.0.tar,解压后 python setup.py install进行安装.
Java中的DateUtil时间工具类是开发者在处理日期和时间时常用的一个自定义工具类。它通常包含了一系列静态方法,用于简化Java内置的日期和时间API的使用,提高代码的可读性和可维护性。在实际开发中,由于Java 8之前...
dateutil模块
python-dateutil-2.2.win32-py2.7.exe,python-dateutil-2.2.win32-py2.7.exe
Python 项目开发实战 - dateutil 模块轻松计算日期 本文将详细介绍使用 dateutil 模块来简化日期计算的过程。日期计算是大部分系统都需要用到的,但它的计算比较复杂,因此很容易出现 Bug。开发高品质软件时要尽量...
Python的`dateutil`库是处理日期和时间的利器,特别是其`parser`模块,能够灵活地解析各种格式的日期字符串。在版本2.5.0中,这个库提供了强大的功能,使得开发者在处理日期相关的任务时更加方便。在这个版本中,...
这里我们关注的是`DateUtil`工具类,它专门用于处理日期转换格式的操作。`DateUtil`工具类通常包含了对日期进行格式化、解析、比较等常用功能,使得在Android项目中处理日期变得更加便捷。 在Java中,日期对象主要...
在Python 3.4版本中,`matplotlib`依赖于两个关键库:`dateutil`和`numpy`。这两个库分别提供了高级日期和时间处理功能以及强大的数值计算能力。 `numpy`(Numerical Python)是Python科学计算的核心库,它引入了...
资源名称:DateUtil 日期时间转换工具类 内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关...
python_dateutil-2.8.0-py2.py3-none-any.whl
本文将深入探讨一个名为`DateUtil`的工具类,它为开发者提供了便利的方法来处理日期时间。`DateUtil`通常由开发者自定义,包含一系列静态方法,以简化日期时间操作。以下是对`DateUtil`类可能包含的一些核心功能的...