importjava.math.BigDecimal;importjava.math.RoundingMode;importjava.text.DecimalFormat;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importorg.apache.commons.lang.StringUtils;importorg.joda.time.DateTime;importorg.joda.time.LocalDate;importorg.joda.time.format.DateTimeFormat;/***@authorSimon Lv
*@since2012-6-10*/
public classDateUtils {public static final String YYMMDD = "yyMMdd";public static final String YYYYMMDD = "yyyyMMdd";public static final String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";public static final String PATTERN_DATETIME_M = "yyyy-MM-dd HH:mm";public static final String PATTERN_DATE = "yyyy-MM-dd";public static final String PATTERN_MONTH = "yyyy-MM";public static final String YEAR = "yyyy";public static final SimpleDateFormat DATE_FORMAT = newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");public staticDateTime toDateTime(String dateTime) {if(StringUtils.isBlank(dateTime)) {return null;
}returnDateTimeFormat.forPattern(PATTERN_DATETIME).parseDateTime(dateTime);
}public staticDateTime strToDateTime(String dateTime) {if(StringUtils.isBlank(dateTime)) {return null;
}returnDateTimeFormat.forPattern(PATTERN_DATE).parseDateTime(dateTime);
}public staticString toString(DateTime dateTime) {returndateTime.toString(PATTERN_DATETIME);
}public staticString dateToString(DateTime dateTime) {returndateTime.toString(YEAR);
}public staticString dateTimeToString(DateTime dateTime) {returndateTime.toString(PATTERN_DATE);
}public staticString toString(String dateTime, String pattern) {return newDateTime(dateTime).toString(pattern);
}public staticString toString(LocalDate localDate, String pattern) {if (localDate == null) {return null;
}returnlocalDate.toString(pattern);
}public staticString todayToString() {return newLocalDate().toString(YYMMDD);
}public staticString todayToStringYear() {return newLocalDate().toString(YEAR);
}public staticString todayToString2() {return newLocalDate().toString(YYYYMMDD);
}public staticString todayToYYYYMMDDStr() {return newLocalDate().toString(PATTERN_DATE);
}public staticString todayToChinaStr() {
Calendar calendar=Calendar.getInstance();
StringBuffer sb= newStringBuffer();
sb.append(calendar.get(Calendar.YEAR)).append("年")
.append(calendar.get(Calendar.MONTH)+1).append("月")
.append(calendar.get(Calendar.DAY_OF_MONTH)).append("日")
.append(calendar.get(Calendar.HOUR)).append("时")
.append(calendar.get(Calendar.MINUTE)).append("分");returnsb.toString();
}/*** 将微信消息中的CreateTime转换成标准格式的时间(yyyy-MM-dd HH:mm:ss)
*
*@paramcreateTime
*@return
*/
public staticString getNormalDateFromWebChat(String createTime) {
Long msgCreateTime= Long.parseLong(createTime) * 1000;return DATE_FORMAT.format(newDate(msgCreateTime));
}/*** 将long型时间格式转换为字符格式
*
*@return返回字符串格式 yyyy-MM-dd HH:mm:ss*/
public static String long2LongString(longdate){if(date == -99){return "-";
}
SimpleDateFormat sdf= newSimpleDateFormat(PATTERN_DATETIME);return sdf.format(newDate(date));
}public staticString long2DateString(Long date, String pattern){if(date == null || date.longValue() ==0){return "-";
}if(date.longValue() == -99){return "";
}
SimpleDateFormat sdf= newSimpleDateFormat(pattern);return sdf.format(newDate(date));
}/*** 将long型时间格式转换为字符格式
*
*@return返回字符串格式 yyyy-MM-dd HH:mm*/
public static String long2DatemString(longdate){if(date == -99){return "-";
}
SimpleDateFormat sdf= newSimpleDateFormat(PATTERN_DATETIME_M);return sdf.format(newDate(date));
}/*** 将long型时间格式转换为字符格式
*
*@paramdate
*@return返回字符串格式 yyyy-MM-dd*/
public staticString long2String(Long date){if(null == date || date == -99 || date == 0){return "-";
}
SimpleDateFormat sdf= newSimpleDateFormat(PATTERN_DATE);return sdf.format(newDate(date));
}/***
* YYYY-MM-DD
*@paramdateTime
*@return
*/
public static longstr2Long(String dateTime){if(StringUtils.isBlank(dateTime)) {return 0l;
}
Date date=string2Date(dateTime);returndate.getTime();
}/*** yyyy-MM-dd HH:mm:ss
*@paramdateTime
*@return
*/
public static longstrSLong(String dateTime){if(StringUtils.isBlank(dateTime)) {return 0l;
}
Date date=string2Datetime(dateTime);returndate.getTime();
}/*** 将DateTime型时间格式转换为long
*
*@paramdate
*@return
*/
public static longdate2Long(DateTime dateTime){if (dateTime == null) {return 0l;
}
String date1=dateTimeToString(dateTime);
Date date=string2Date(date1);returndate.getTime();
}/*** 获得精确到秒的日期类型
* yyyy-MM-dd HH:mm:ss
*@paramdate
*@return
*/
public staticDate string2Datetime(String date) {
Date retValue= null;
SimpleDateFormat sdf= newSimpleDateFormat(PATTERN_DATETIME);try{
retValue=sdf.parse(date);
}catch(Exception e){
e.printStackTrace();
}returnretValue;
}/*** 获得日期类型
*
*@paramdate
*@return
*/
public staticDate string2Date(String date) {
Date retValue= null;
SimpleDateFormat sdf= newSimpleDateFormat(PATTERN_DATE);try{
retValue=sdf.parse(date);
}catch(Exception e){
e.printStackTrace();
}returnretValue;
}/*** 日期转换为Long
*
*@paramdateTime
*@return
*/
public static longstr2MonthLong(String dateTime){if(StringUtils.isEmpty(dateTime)) {return 0l;
}
Date date=string2MonthDate(dateTime);return date != null ? date.getTime() : 0l;
}/*** 获得月份类型
*
*@paramdate
*@return
*/
public staticDate string2MonthDate(String date) {
Date retValue= null;
SimpleDateFormat sdf= newSimpleDateFormat(PATTERN_MONTH);try{
retValue=sdf.parse(date);
}catch(Exception e){
e.printStackTrace();
}returnretValue;
}/***
* YYYY-MM-DD
*@paramdate
*@return
*/
public static intgetDayOfWeek(String date){
String[] dateArr= date.split("-");int year = Integer.parseInt(dateArr[0]);int month = Integer.parseInt(dateArr[1]);int day= Integer.parseInt(dateArr[2]);
Calendar calendar= Calendar.getInstance();//获得一个日历
calendar.set(year, month-1, day);//设置当前时间,月份是从0月开始计算
int number = calendar.get(Calendar.DAY_OF_WEEK);//星期表示1-7,是从星期日开始,
returnnumber;
}/*** 获取指定日期一年前时间
*
*@return返回long格式*/
public static long getChainYear(longdate){
Calendar cal=Calendar.getInstance();
cal.setTime(newDate(date));
cal.add(Calendar.YEAR,-1);returncal.getTime().getTime();
}/***
* 时间差,分钟
*@paramstartTime
*@paramendTime
*@return
*/
public static String timeDifference(long startTime,longendTime ){long timeDifferenceSecond = endTime -startTime;double dmin = ((double)timeDifferenceSecond/(60*1000));
BigDecimal bd=BigDecimal.valueOf(dmin);
DecimalFormat df= new DecimalFormat("0");
df.setRoundingMode(RoundingMode.HALF_UP);returndf.format(bd);
}public static Date getTimesWeekMoningDate(int h,int m,ints){
Calendar cal=Calendar.getInstance();int year =cal.get(Calendar.YEAR);int monday =cal.get(Calendar.MONDAY);int dayOfMonth =cal.get(Calendar.DAY_OF_MONTH);
cal.set(year, monday,dayOfMonth, h, m, s);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);returncal.getTime();
}/*** 本周开始时间 yyyy-MM-dd HH:mm:ss 0点
*@return
*/
public staticString getTimesWeekMorning() {
SimpleDateFormat formatter= newSimpleDateFormat(PATTERN_DATETIME);
String dateString= formatter.format(getTimesWeekMoningDate(0,0,0));returndateString;
}/*** 本周结束时间 yyyy-MM-dd HH:mm:ss 24点
*@return
*/
public staticString getTimesWeekNight() {
Calendar cal=Calendar.getInstance();
cal.setTime(getTimesWeekMoningDate(0,0,0));
cal.add(Calendar.DAY_OF_WEEK,7);
SimpleDateFormat formatter= newSimpleDateFormat(PATTERN_DATETIME);
String dateString=formatter.format(cal.getTime());returndateString;
}/***
* 本月开始时间0点
*@return
*/
public staticString getTimesMonthMorning() {
Calendar cal=Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH),0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
SimpleDateFormat formatter= newSimpleDateFormat(PATTERN_DATETIME);
String dateString=formatter.format(cal.getTime());returndateString;
}/***
* 本月结束时间24点
*@return
*/
public staticString getTimesMonthNight() {
Calendar cal=Calendar.getInstance();int year =cal.get(Calendar.YEAR);int monday =cal.get(Calendar.MONDAY);int dayOfMonth =cal.get(Calendar.DAY_OF_MONTH);
cal.set(year, monday,dayOfMonth,0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY,24);
SimpleDateFormat formatter= newSimpleDateFormat(PATTERN_DATETIME);
String dateString=formatter.format(cal.getTime());returndateString;
}
}