package com.broadengate.core.commons.time;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import org.apache.log4j.Logger;
/**
* 日期处理的类
*
*/
public class DateUtils extends org.apache.commons.lang.time.DateUtils
{
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(DateUtils.class);
/**
* 日期格式化对象
*/
private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private static DateFormat dateFormatCN = new SimpleDateFormat("yyyy年MM月dd日");
/**
* 日期格式化对象
*/
private static DateFormat monthDateFormate = new SimpleDateFormat("MM-dd");
/**
* 日期时间格式化对象
*/
private static DateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
/**
* 时间格式化对象
*/
private static DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 日期转换为字符窜:yyyy-mm-dd hh:mm:ss
*
* @param d
* @return
*/
public static String timeToString(Date d)
{
return sdf.format(d);
}
/**
* 字符窜转换为日期:yyyy-mm-dd hh:mm:ss
*
* @param s
* @return
* @throws ParseException
*/
public static Date stringToDate(String s)
{
if (s == null)
{
return null;
}
try
{
return sdf.parse(s);
} catch (ParseException e)
{
// do nothing, just return null;
return null;
}
}
/**
* 获取时间格式化对象 "yyyy-MM-dd"
*
* @return
*/
public static final DateFormat getDateFormat()
{
return dateFormat;
}
/**
* 获取时间日期格式化对象 "yyyy-MM-dd HH:mm"
*
* @return
*/
public static final DateFormat getDateTimeFormat()
{
return dateTimeFormat;
}
/**
* @return Returns the monthDateFormate.
*/
public static DateFormat getMonthDateFormate()
{
return monthDateFormate;
}
/**
* 获取当前时间的时间对象
*
* @return
*/
public static final Date nowDate()
{
return new Date();
}
/**
* 系统最小时间
*
* @return
*/
public static final Date minDate()
{
return dateBegin(getDate(1900, 1, 1));
}
/**
* 系统最大时间
*
* @return
*/
public static final Date maxDate()
{
return dateEnd(getDate(2079, 1, 1));
}
/**
* 获取指定时间的年
*
* @param date
* @return
*/
public static final int year(Date date)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}
/**
* 获取指定时间的月
*
* @param date
* @return
*/
public static final int month(Date date)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
}
/**
* 获取指定时间的日
*
* @param date
* @return
*/
public static final int day(Date date)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DATE);
}
/**
* 获取一个时间对象
*
* @param year
* 格式为:2004
* @param month
* 从1开始
* @param date
* 从1开始
* @return
*/
public static final Date getDate(int year, int month, int date)
{
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, date);
return calendar.getTime();
}
/**
* 获取一个时间对象
*
* @param year
* 格式为:2004
* @param month
* 从1开始
* @param date
* 从1开始
* @param hour
* @param minute
* @param second
* @return
*/
public static final Date getDateTime(int year, int month, int date, int hour, int minute, int second)
{
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, date, hour, minute, second);
return calendar.getTime();
}
/**
* 返回两个时间相差的天数
*
* @param d1
* @param d2
* @return
*/
public static int dateSub(String d1, String d2)
{
int count = 0;
if (d1 != null && d1.trim().length() > 0 && d2 != null && d2.trim().length() > 0)
{
count = (int) (DateUtils.parseDate(d1).getTime() / (24 * 60 * 60 * 1000) - DateUtils
.parseDate(d2).getTime()
/ (24 * 60 * 60 * 1000));
}
return count;
}
/**
* 返回两个时间相差的小时数
*
* @param a
* @param b
* @return
*/
public static final int subHour(Date a, Date b)
{
int hour = (int) (b.getTime() / (60 * 60 * 1000) - a.getTime() / (60 * 60 * 1000));
return hour 0)
{
beResult = 1;
} else if ((d1.getTime() - d2.getTime()) 0 && endDate != null
&& endDate.trim().length() > 0)
{
if (dateSub(startDate, endDate) == 0)
{
return new String[] { startDate };
} else
{
Date start = DateUtils.parseDate(startDate);
Date end = DateUtils.parseDate(endDate);
int count = DateUtils.dateSub(end, start) + 1;
dateSpace = new String[count];
dateSpace[0] = DateUtils.formatDate(start);
for (int i = 1; i = 0 && c.get(Calendar.HOUR_OF_DAY) = 0 && c.get(Calendar.HOUR_OF_DAY) 0)
{
// 处理第一天
if (DateUtils.isAMorPM(startDate).equals("AM"))
{
list.add(DateUtils.formatDate(startDate) + "AM");
list.add(DateUtils.formatDate(startDate) + "PM");
}
if (DateUtils.isAMorPM(startDate).equals("PM"))
{
list.add(DateUtils.formatDate(startDate) + "PM");
}
/** 处理第二天到结束日期的前一天 **/
Date temp = DateUtils.addDate(startDate, 0, 0, 1);
while (DateUtils.dateSub(endDate, temp) > 0)
{
list.add(DateUtils.formatDate(temp) + "AM");
list.add(DateUtils.formatDate(temp) + "PM");
temp = DateUtils.addDate(temp, 0, 0, 1);
}
// 处理最后一天
if (DateUtils.isAMorPM(endDate).equals("AM"))
{
list.add(DateUtils.formatDate(endDate) + "AM");
}
if (DateUtils.isAMorPM(endDate).equals("PM"))
{
list.add(DateUtils.formatDate(endDate) + "AM");
list.add(DateUtils.formatDate(endDate) + "PM");
}
}
return list;
}
// 获得时间区间数据(比如2007-8-1到2007-8-30,将获得一个连续的时间数组dateSpace[]{"2007-8-1AM","2007-8-1PM","2007-8-2AM","2007-8-2PM"..."2007-8-30PM"}),精确到半天
public static Collection getHalfDateSpace(String startDate, String endDate)
{
Collection list = null;
if (startDate != null && startDate.trim().length() > 0 && endDate != null
&& endDate.trim().length() > 0)
{
Date start = parseDateTime(startDate);
Date end = parseDateTime(endDate);
list = new ArrayList();
// 两个日期在同一天的情况
if (dateSub(start, end) == 0)
{
if (isAMorPM(start).equals("AM") && isAMorPM(end).equals("PM"))
{
list.add(formatDate(start) + "AM");
list.add(formatDate(start) + "PM");
}
if (isAMorPM(start).equals("AM") && isAMorPM(end).equals("AM"))
{
list.add(formatDate(start) + "AM");
}
if (isAMorPM(start).equals("PM") && isAMorPM(end).equals("PM"))
{
list.add(formatDate(start) + "PM");
}
}
if (dateSub(endDate, startDate) > 0)
{
// 处理第一天
if (DateUtils.isAMorPM(start).equals("AM"))
{
list.add(formatDate(start) + "AM");
list.add(formatDate(start) + "PM");
}
if (DateUtils.isAMorPM(start).equals("PM"))
{
list.add(formatDate(start) + "PM");
}
/** 处理第二天到结束日期的前一天 **/
Date temp = addDate(start, 0, 0, 1);
String t = null;
while (dateSub(end, temp) > 0)
{
list.add(formatDate(temp) + "AM");
list.add(formatDate(temp) + "PM");
temp = addDate(temp, 0, 0, 1);
}
// 处理最后一天
if (DateUtils.isAMorPM(end).equals("AM"))
{
list.add(formatDate(end) + "AM");
}
if (DateUtils.isAMorPM(end).equals("PM"))
{
list.add(formatDate(end) + "AM");
list.add(formatDate(end) + "PM");
}
}
}
return list;
}
// 获得时间区间数据(比如2007-8-1到2007-8-30,将获得一个连续的时间数组dateSpace[]{"2007-8-1AM","2007-8-1PM","2007-8-2AM","2007-8-2PM"..."2007-8-30PM"}),精确到半天
public static Collection getHalfDateSpace(Date startDate, int count)
{
Collection list = new ArrayList();
// 处理第一天
list.add(formatDate(startDate) + "AM");
list.add(formatDate(startDate) + "PM");
/** 处理第二天到结束日期的前一天 **/
Date temp = addDate(startDate, 0, 0, 1);
int c = 1;
while (c 0 && endDate != null
&& endDate.trim().length() > 0)
{
String[] s = getDateSpace(startDate, endDate);
for (int i = 0; i 0)
{
for (Iterator i = list.iterator(); i.hasNext();)
{
String str = (String) i.next();
if (strDate.equalsIgnoreCase(str))
{
beResult = true;
break;
}
}
}
return beResult;
}
/**
* 获取当前年的前若干年
*
* @return
*/
public static String[] getYearArray(int n)
{
// 取当前年的前若干年
String[] yearArray = new String[n];
int y = year(nowDate());
for (int i = 0; i
相关推荐
java日期处理大全,用与时间的各种处理。。
java中关于日期处理的总结,包含各种日期格式之间的转java.util.Date(已经不提倡使用,该类的方法比较少) java.util.Calendar(抽象类) java.util.GregorianCalendar(是Calendar的子类,日期处理时候经常使用该类)****...
java日期处理 和格式解析 包含java.util.Calender java.util. GregorianCalendar java.util.Date
基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。
* 文件名:DateUtils.java 日期处理相关工具类 * 版本信息:V1.0 * 日期:2013-03-11 * Copyright BDVCD Corporation 2013 * 版权所有 http://www.bdvcd.com */ public class DateUtils { /**定义常量**/ ...
DateHandler.java日期处理类Java文件下载,有些功能很不错哦,比如计算是否是季度末、计算从现在开始几天后的时间、得到当前时间,用于文件名,使用yyyyMMddHHmmss格式、比较日期,与现在-N天的日期对比、比较日期,...
自己整理的Java日期处理类 。包含获取两个之间段之间的天数、月初日期,月末日期、一个时间段之间的所有的日期,月份 一周的第一天,最后一天、 当前是周几等。仅供参考
java日期处理.pdf
java 日期处理工具类
jquery获得单选框和下拉框的值,java日期处理,遍历list,遍历map
java日期处理[文].pdf
日期操作工具类,主要实现了日期的常用操作。 * * 在工具类中经常使用到工具类的格式化描述,这个主要是一个日期的操作类,所以日志格式主要使用 SimpleDateFormat的定义格式. * * 格式的意义如下: 日期和...
第一部分关于JAVA的Date (参考关于JAVA的Date总结) 第二部分Date工具类(参考一个总结好的很好的关于JAVA的Date工具类)
处理用户的出生年月日、注册日期,订单的创建时间.使用方便灵活
java处理日期合并
java语言日期处理大全,主要是如何运用日期