package com.mycode.util;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Map.Entry;
import org.springframework.util.StringUtils;
/**
- 时间工具类
- @author lz
*/
public class DateUtil {
public static final String DATA_FORMAT_yyyy_MM_dd = "yyyy-MM-dd";
public static final String DATA_FORMAT_yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
public static final String DATA_FORMAT_yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
public static final String ISO_DATETIME_TIME_ZONE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
public static String DEFAULT_DATE_TIME = "yyyy-MM-dd HH:mm:ss";
public static String DEFAULT_DATE_TIME_PATH = "yyyy/MM/dd";
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
public static final String DATA_FORMAT_YYYY_MM_dd_HH_mm_ss_NNN = "yyyyMMddHHmmssSSS";
public static final String DATA_FORMAT_AMERICAN = "MMM dd, yyyy hh:mm:ss a";
public static final String DATA_FORMAT_MMM_dd_yyyy_HH_mm_ss_aaa = "MMM dd,yyyy HH:mm:ss aaa";
public static final String DEFAULT_TIME_FORMAT_HM = "HH:mm";
public static final String DATE_FORMAT_FOR_LINUX = "yyyy.MM.dd-HH:mm:ss";
public static final long DAY_SECOND = 0x5265c00L;
public DateUtil() {
}
/**
* Date 类型时间转换成字符串类型时间
* @param dateValue
* @param strFormat 格式化的样式
* @return
*/
public static String dateToString(Date dateValue, String strFormat)
{
return (new SimpleDateFormat(strFormat)).format(dateValue);
}
/**
* 字符串类型时间转换成Date类型时间
* @param strValue
* @param strFormat
* @return
*/
public static Date stringToDate(String strValue, String strFormat)
{
Date date = null;
try
{
date = (new SimpleDateFormat(strFormat)).parse(strValue);
}
catch(ParseException e) { }
return date;
}
/**
* 对象重写toString(),如果是时间类型,则转换成字符串时间
* @param obj
* @param strFormat
* @return
/
public static String objectToString(Object obj, String strFormat)
{
String result = null;
if(obj != null){
if(obj instanceof Date){
result = dateToString((Date)obj, strFormat);
}else{
result = obj.toString();
}
}
return result;
}
/*
* 时间转换成时间戳,默认格式yyyy-MM-dd HH:mm:ss
* @param date
* @return
/
public static Timestamp dateToTimestamp(Date date)
{
SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String time = df.format(date);
Timestamp ts = Timestamp.valueOf(time);
return ts;
}
/*
* 时间转换成时间戳,指定格式
* @param date
* @return
*/
public static Timestamp dateToTimestamp(Date date, String format)
{
SimpleDateFormat df = new SimpleDateFormat(format);
String time = df.format(date);
Timestamp ts = Timestamp.valueOf(time);
return ts;
}
/**
* 获取当前天数的开始时间 eg: 当前时间2019-6-22 13:23:00
* 结果 2019-6-22 0:00:00
* @return
*/
public static Date getTodayBegin()
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获取当前天数的结束时间 eg: 当前时间2019-6-22 13:23:00
* 结果 2019-6-22 23:59:59
* @return
*/
public static Date getTodayEnd()
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
return cal.getTime();
}
/**
* 获取指定时间的零点时间 eg: 2019-6-22 0:00:00
* @param date
* @return
*/
public static Date getDayBegin(Date date)
{
if(date == null)
{
return null;
} else
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
}
/**
* 获取指定时间的 当天的结束时间 eg: 2019-6-22 23:59:59
* @param date
* @return
*/
public static Date getDayEnd(Date date)
{
if(date == null)
{
return null;
} else
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
return cal.getTime();
}
}
/**
* 获取指定时间增加天数后的时间(Date 类型) eg:2019-6-22 23:59:59
2019-6-27 15:28:17
*
* @param date
* @param plusDays 可以为负数
* @return
*/
public static Date getAddDayDate(Date date, int plusDays)
{
Calendar cal = Calendar.getInstance();
if(date != null)
cal.setTime(date);
cal.add(Calendar.DATE, plusDays);
return cal.getTime();
}
/**
* 获取指定时间增加天数后的时间(DateStr 类型) eg:2019-6-22 23:59:59
2019-6-27 15:28:17
* @param date
* @param plusDays 增加天数
* @param dateFormat 格式化时间类型
* @return
*/
public static String getAddDayDateFromToday(Date date, int plusDays, String dateFormat)
{
return dateToString(getAddDayDate(date, plusDays), dateFormat);
}
/**
* 指定时间增减小时数
* @param date
* @param plusHours
* @return
*/
public static Date getAddHourDate(Date date, int plusHours)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, plusHours);
return cal.getTime();
}
/**
* 指定时间增减分钟数
* @param date
* @param plusMinutes
* @return
*/
public static Date getAddMinuteDate(Date date, int plusMinutes)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, plusMinutes);
return cal.getTime();
}
/**
* 指定时间增减秒数
* @param date
* @param plusMinutes
* @return
*/
public static Date getAddSecondDate(Date date, int plusMinutes)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.SECOND, plusMinutes);
return cal.getTime();
}
/**
* 给指定时间增减月份
* @param date
* @param plusMonths
* @return
*/
public static Date getAddMonthDate(Date date, int plusMonths)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, plusMonths);
return cal.getTime();
}
/**
* 给指定时间增减年份
* @param date
* @param plusMonths
* @return
*/
public static Date getAddYearDate(Date date, int plusMonths)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, plusMonths);
return cal.getTime();
}
/**
* 指定时间 中月份的第一天 2019-6-1 0:00:00
* @param date
* @return
*/
public static Date getMonthBeginTime(Date date)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 指定时间 中月份的最后一天 最后时间 2019-2-28 23:59:59
* @param date
* @return
*/
public static Date getMonthEndTime(Date date)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
return cal.getTime();
}
/**
* 某个时间一年的最后一刻 2025-12-31 23:59:59
* @param date
* @return
*/
public static Date getYearEndTime(Date date)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR));
cal.set(Calendar.MONTH, 12);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
return cal.getTime();
}
/**
* 某个时间一年的开始时间 2019-1-1 0:00:00
* @param date
* @return
*/
public static Date getYearStartTime(Date date)
{
if(date == null)
date = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) - 1);
cal.set(Calendar.MONTH, 12);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获取指定年 的结束时间 eg: 2018-12-31 23:59:59
* @param year
* @return
*/
public static Date getYearEndTimeByYear(int year)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, 12);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
return cal.getTime();
}
/**
* 获取指定年 的开始时间 eg: 2018-1-1 0:00:00
* @param year
* @return
*/
public static Date getYearStartTimeByYear(int year)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year - 1);
cal.set(Calendar.MONTH, 12);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 时间拆分数组 eg:[2019, 6, 22, 17, 8]
* @param date
* @return
*/
public static int[] getTimeArray(Date date)
{
if(date == null)
date = new Date(System.currentTimeMillis());
int timeArray[] = new int[5];
Calendar cal = Calendar.getInstance();
cal.setTime(date);
timeArray[0] = cal.get(Calendar.YEAR);
timeArray[1] = cal.get(Calendar.MONTH) + 1;
timeArray[2] = cal.get(Calendar.DATE);
timeArray[3] = cal.get(Calendar.HOUR_OF_DAY);
timeArray[4] = cal.get(Calendar.MINUTE);
return timeArray;
}
/**
* 获取指定年月日的时间
* @param year
* @param month
* @param day
* @return
*/
public static Date getDateByYMD(Integer year, Integer month, Integer day)
{
Calendar cal = Calendar.getInstance();
if(year != null)
cal.set(Calendar.YEAR, year.intValue());
if(month != null)
cal.set(Calendar.MONTH, month.intValue() - 1);
if(day != null)
cal.set(Calendar.DATE, day.intValue());
return cal.getTime();
}
/**
* 获取两个时间之间相差的秒数
* @param date1
* @param date2
* @return
*/
public static Long getSecondBetween(Date date1, Date date2)
{
long m = date1.getTime();
long n = date2.getTime();
return (m - n) / 1000L;
}
/**
* 指定两个时间相差的小时数
* @param date1
* @param date2
* @return
*/
public static int getHourBetween(Date date1, Date date2)
{
long m = date1.getTime();
long n = date2.getTime();
return (int)((m - n) /(1000*60*60));
}
/**
* 指定两个时间相差天数
* @param date1
* @param date2
* @return
*/
public static int getDayBetween(Date date1, Date date2)
{
Calendar c1 = Calendar.getInstance();
c1.setTime(date1);
Calendar c2 = Calendar.getInstance();
c2.setTime(date2);
return (int)((c1.getTimeInMillis() - c2.getTimeInMillis()) / (1000*60*60*24));
}
/**
* 计算两个时间相差的月份
* @param date1
* @param date2
* @return
*/
public static int getMonthBetween(Date date1, Date date2)
{
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(date1);
c2.setTime(date2);
return (c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR)) * 12 + (c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH));
}
/**
* 每周数字到中文映射
* @param weekNum
* @return
*/
public static String getCnWeekDesc(int weekNum)
{
String strWeek = "";
switch(weekNum)
{
case 1: // '\001' 星期一
strWeek = "\u5468\u4E00";
break;
case 2: // '\002' 星期二
strWeek = "\u5468\u4E8C";
break;
case 3: // '\003' 星期三
strWeek = "\u5468\u4E09";
break;
case 4: // '\004' 星期四
strWeek = "\u5468\u56DB";
break;
case 5: // '\005' 星期五
strWeek = "\u5468\u4E94";
break;
case 6: // '\006' 星期六
strWeek = "\u5468\u516D";
break;
case 7: // '\007' 星期天
strWeek = "\u5468\u65E5";
break;
}
return strWeek;
}
/**
* 计算时间的早午,下午
* @param date
* @return
*/
public static String getCnAMPM(Date date)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
if(0 == cal.get(Calendar.AM_PM))
return "\u4E0A\u5348"; // 上午
else
return "\u4E0B\u5348"; //下午
}
/**
* 判断某年份是否是闰年
* @param year
* @return
*/
public static boolean isLeapYear(int year)
{
Calendar calendar = Calendar.getInstance();
return ((GregorianCalendar)calendar).isLeapYear(year);
}
/**
* 获取本周的开始时间 2019-6-17 0:00:00
* @param date
* @return
*/
public static Date getBeginDateofThisWeek(Date date)
{
Calendar current = Calendar.getInstance();
current.setTime(date);
int dayOfWeek = current.get(Calendar.DAY_OF_WEEK);
if(dayOfWeek == 1)
current.add(Calendar.DATE, -6);
else
current.add(Calendar.DATE, 2 - dayOfWeek);
current.set(Calendar.HOUR_OF_DAY, 0);
current.set(Calendar.MINUTE, 0);
current.set(Calendar.SECOND, 0);
current.set(Calendar.MILLISECOND, 0);
return current.getTime();
}
/**
* 获取本周的结束时间 2019-6-23 23:59:59
* @param date
* @return
*/
public static Date getEndDateofThisWeek(Date date)
{
Calendar current = Calendar.getInstance();
current.setTime(date);
int dayOfWeek = current.get(Calendar.DAY_OF_WEEK);
if(dayOfWeek != 1)
current.add(Calendar.DATE, 9 - dayOfWeek);
else
current.add(Calendar.DATE, 1);
current.set(Calendar.HOUR_OF_DAY, 0);
current.set(Calendar.MINUTE, 0);
current.set(Calendar.SECOND, 0);
current.set(Calendar.MILLISECOND, -1);
return current.getTime();
}
/**
* 获取指定时间向后一周七天的时间,以map 返回
* @return
*/
public static Map<String,Date> getDateForWeekDay()
{
Map<String,Date> weekDayDateMap = new HashMap<String,Date>();
Calendar calendar = Calendar.getInstance();
for(int i = 1; i <= 7; i++)
{
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if(dayOfWeek == 0)
dayOfWeek = 7;
weekDayDateMap.put((new StringBuilder()).append(dayOfWeek).append("").toString(), calendar.getTime());
calendar.add(Calendar.DATE, 1);
}
return weekDayDateMap;
}
/**
* 获取指定时间是 所属周的那一天
* @param date
* @return
*/
public static int getDayOfWeek(Date date)
{
if(date == null)
date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int today = cal.get(Calendar.DAY_OF_WEEK);
if(today == 1)
return 7;
else
return today - 1;
}
/**
* 获取指定时间是一年中的第几个周
* @param date
* @return
*/
public static int getWeekOfYear(Date date)
{
if(date != null)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.WEEK_OF_YEAR);
} else
{
return 0;
}
}
/**
* 获取指定时间的年数
* @param date
* @return
*/
public static int getYear(Date date)
{
if(date != null)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.YEAR);
} else
{
return 0;
}
}
/**
* 获取指定时间的月份
* @param date
* @return
*/
public static int getMonthOfYear(Date date)
{
if(date != null)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.MONTH);
} else
{
return 0;
}
}
/**
* 获取指定时间 的小时数
* @param date
* @return
*/
public static int getHourOfDay(Date date)
{
if(date != null)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.HOUR_OF_DAY);
} else
{
return 0;
}
}
/**
* 清除时间, 置为当前时间的零点
* @param date
* @return
*/
public static Date clearTime(Date date)
{
if(date != null)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
} else
{
return null;
}
}
/**
* 两个时间比较 date1<date2 -1 ; 等于返回0; 大于返回1
* @param date1
* @param date2
* @return
*/
public static int compareTime(Date date1, Date date2)
{
long intDate1 = date1.getTime();
long intDate2 = date2.getTime();
return intDate1 < intDate2 ? -1 : ((byte)(intDate1 != intDate2 ? 1 : 0));
}
/**
* 获取昨天时间 eg: 当前时间 2019-6-22 结果: 2019-06-21
* @return
*/
public static String getYesterday()
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
String yesterday = (new SimpleDateFormat("yyyy-MM-dd")).format(cal.getTime());
return yesterday;
}
/**
* 获取当前时间对象 每个小时(整点)的时间 2019-06-22 00:00:00 ——2019-06-22 23:00:00
* @return
*/
public static List<Date> getDayHours()
{
List<Date> dayHours = new ArrayList<Date>();
Date todayBegin = getTodayBegin();
for(int i = 1; i <= 24; i++)
dayHours.add(getAddHourDate(todayBegin, i));
return dayHours;
}
/**
* 用指定的时分秒 time 替换当前时间的时分秒 eg: time=12:23:23 当前时间 2019-6-22 21:34:43
* 结果: 2019-6-22 12:23:23
* @param date
* @param time
* @return
*/
public static Date createDay(Date date, String time)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
if(time.length() == 5)
time = (new StringBuilder()).append(time).append(":00").toString();
String intTime[] = time.split(":");
cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(intTime[0]).intValue());
cal.set(Calendar.MINUTE, Integer.valueOf(intTime[1]).intValue());
cal.set(Calendar.SECOND, Integer.valueOf(intTime[2]).intValue());
return cal.getTime();
}
/**
* 计算当前时间经历的天数,小时,分钟 ,秒数 eg: 当前时间 2019-06-22 19:05:00
* 结果: 18069天11小时13分钟8秒
* @param second 秒数
* @return
*/
public static String calculateTimeStr(Long second)
{
//0x15180L 为一天时间所包含秒数的十六进制表示
StringBuffer buffer = new StringBuffer();
long days = second.longValue() / 0x15180L;
if(0L != days)
buffer.append((new StringBuilder()).append(days).append("\u5929").toString());
long hours = (second.longValue() % 0x15180L) / 3600L;
if(0L != hours)
buffer.append((new StringBuilder()).append(hours).append("\u5C0F\u65F6").toString());
long minutes = (second.longValue() % 3600L) / 60L;
if(0L != minutes)
buffer.append((new StringBuilder()).append(minutes).append("\u5206\u949F").toString());
long seconds = second.longValue() % 60L;
if(0L != seconds)
buffer.append((new StringBuilder()).append(seconds).append("\u79D2").toString());
if(second.longValue() < 1L)
return "1\u79D2";
else
return buffer.toString();
}
/**
* 获取一天24 小时 时间点集合
* res: [1点, 2点, 3点, 4点, 5点, 6点, 7点, 8点, 9点, 10点,
* 11点, 12点, 13点, 14点, 15点, 16点, 17点, 18点, 19点, 20点, 21点, 22点, 23点, 24点]
* @return
*/
public static List<String> getTodayHourByChina()
{
List<String> list = new ArrayList<String>();
for(int i = 1; i <= 24; i++)
list.add((new StringBuilder()).append(i).append("\u70B9").toString());
return list;
}
/**
* 获取中文 31天数集合
* res: [1号, 2号, 3号, 4号, 5号, 6号, 7号, 8号, 9号, 10号, 11号, 12号, 13号, 14号, 15号, 16号, 17号,
* 18号, 19号, 20号, 21号, 22号, 23号, 24号, 25号, 26号, 27号, 28号, 29号, 30号, 31号]
* @return
*/
public static List<String> getTodayDayByChina()
{
List<String> list = new ArrayList<String>();
for(int i = 1; i <= 31; i++)
list.add((new StringBuilder()).append(i).append("\u53F7").toString());
return list;
}
/**
* 获取月份中文集合
* res: [1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
* @return
*/
public static List<String> getAllMonthByChina()
{
List<String> list = new ArrayList<String>();
for(int i = 1; i <= 12; i++)
list.add((new StringBuilder()).append(i).append("\u6708").toString());
return list;
}
/**
* 比较开始时间(时间戳比较) ,结束时间是否符合规范, 正常则返回true,否则 false
* @param startTime
* @param endTime
* @param currentTime
* @return
*/
public static boolean compareDate(Date startTime, Date endTime, Date currentTime)
{
Long startMin = Long.valueOf(startTime.getTime());
Long endMin = Long.valueOf(endTime.getTime());
Long currentMin = Long.valueOf(currentTime.getTime());
return startMin.longValue() <= currentMin.longValue() && currentMin.longValue() <= endMin.longValue();
}
/**
* 时间转换成Integer
* es: 20190622
* @param date
* @return
*/
public static int toInteger(Date date)
{
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.YEAR) * 10000 + (c.get(Calendar.MONTH) + 1) * 100 + c.get(Calendar.DATE);
}
/**
* 比较开始时间(只比较年月日处) ,结束时间是否符合规范, 正常则返回true,否则 false
* @param startTime
* @param endTime
* @param currentTime
* @return
*/
public static boolean compareDateByYMD(Date startTime, Date endTime, Date currentTime)
{
int start = toInteger(startTime);
int end = toInteger(endTime);
int current = toInteger(currentTime);
return start <= current && current <= end;
}
/**
* 比较时间 (年月日处) 大于 1, 小于-1 等于0
* @param time1
* @param time2
* @return
*/
public static int compareDateByYMD(Date time1, Date time2)
{
int t1 = toInteger(time1);
int t2 = toInteger(time2);
if(t1 > t2)
return 1;
return t2 != t1 ? -1 : 0;
}
/**
* 重置系统时间
* @param date
*/
public static void resetSystemTime(Date date)
{
try
{
String osName = System.getProperty("os.name");
if(osName.matches("^(?i)Windows.*$"))
{
String cmd = (new StringBuilder()).append(" cmd /c date ").append(dateToString(date, "yyyy-MM-dd")).toString();
Runtime.getRuntime().exec(cmd);
cmd = (new StringBuilder()).append(" cmd /c time ").append(dateToString(date, "HH:mm:ss")).toString();
Runtime.getRuntime().exec(cmd);
} else
{
String time = dateToString(date, "yyyy.MM.dd-HH:mm:ss");
String cmd = (new StringBuilder()).append(" date -s ").append(time).toString();
Runtime.getRuntime().exec(cmd);
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
/**
* 用指定的时分秒时间替换 date Time 部分内容
*
* @param date
* @param hour
* @param minute
* @param second
* @return
*/
public static Date setTimeOfDate(Date date, int hour, int minute, int second)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, second);
return cal.getTime();
}
/**
* 格式化日期对象, 格式内容为空的情况,默认以 yyyy-MM-dd格式
* @param format
* @param dt
* @return
*/
public static String formatDate(String format, Date dt)
{
if(dt == null)
return "";
if(StringUtils.isEmpty(format))
format = "yyyy-MM-dd";
SimpleDateFormat fmt = new SimpleDateFormat(format);
return fmt.format(dt);
}
/**
* 以指定格式解析当前时间
* @param format
* @return
*/
public static String parseCurrentTimeToStr(String format)
{
SimpleDateFormat simpleDate = new SimpleDateFormat(format);
return simpleDate.format(Long.valueOf(System.currentTimeMillis()));
}
/**
* 字符串时间类型,从fromFormat 格式转换至 toFormat 格式
* @param dateValue
* @param fromFormat
* @param toFormat
* @return
*/
public static String convertDateStr2Appoint(String dateValue,String fromFormat,String toFormat){
if(null==dateValue||"".equals(dateValue)){
return “”;
}
Date date;
try{
date=new SimpleDateFormat(fromFormat).parse(dateValue);
return new SimpleDateFormat(toFormat).format(date);
}catch(ParseException e){
e.printStackTrace();
}
return null;
}
public static void main(String args[])
{
Date date = new Date();
int hourBetween = getHourBetween(getAddSecondDate(date,3600),date);
System.out.println(hourBetween);
int monthBetween = getMonthBetween(getAddYearDate(date,1),date);
System.out.println(monthBetween);
String cnWeekDesc = getCnWeekDesc(7);
System.out.println(cnWeekDesc);
String cnAMPM = getCnAMPM(date);
System.out.println(cnAMPM);
Date beginDateofThisWeek = getEndDateofThisWeek(date);
System.out.println(beginDateofThisWeek.toLocaleString());
Map<String, Date> dateForWeekDay = getDateForWeekDay();
Set<Entry<String, Date>> entrySet = dateForWeekDay.entrySet();
for (Entry<String, Date> entry : entrySet) {
System.out.println(entry.getKey()+" "+entry.getValue().toLocaleString());
}
int dayOfWeek = getDayOfWeek(date);
System.out.println(dayOfWeek);
int weekOfYear = getWeekOfYear(date);
System.out.println(weekOfYear);
Date clearTime = clearTime(date);
System.out.println(clearTime.toLocaleString());
String yesterday = getYesterday();
System.out.println(yesterday);
List dayHours = getDayHours();
System.out.println(dayHours);
Date createDay = createDay(date, "12:23:23");
System.out.println(createDay.toLocaleString());
String calculateTimeStr = calculateTimeStr(date.getTime()/1000);
System.out.println(calculateTimeStr);
int integer = toInteger(date);
System.out.println(integer);
}
}