public class DateTimeUtil {
public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static final String YYYYMMDD = "yyyyMMdd";
public static final String YYYYMM = "yyyyMM";
public static final String YYYY_MM = "yyyy-MM";
private static Map<String, ThreadLocal<DateFormat>> FORMAT_CACHE = new ConcurrentHashMap<String, ThreadLocal<DateFormat>>();
/**
* 获取DateFormat实例(线程安全)
*
* @param pattern
* @return
*/
public static DateFormat getDateFormat(String pattern) {
ThreadLocal<DateFormat> threadLocal = FORMAT_CACHE.get(pattern);
if (threadLocal == null) {
threadLocal = new ThreadLocal<DateFormat>();
DateFormat format = new SimpleDateFormat(pattern);
threadLocal.set(format);
FORMAT_CACHE.put(pattern, threadLocal);
}
return threadLocal.get();
}
/**
* 获取系统当前时间
*
* @return
*/
public static String getCurrentDate(String pattern) {
DateFormat format = getDateFormat(pattern);
return format.format(new Date());
}
/**
* 获取系统当前时间
*
* @param pattern
* @return
*/
public static long getCurrentDateLong(String pattern) {
return Long.parseLong(getCurrentDate(pattern));
}
/**
* 获取系统当前时间(默认格式:YYYYMMDDHHMMSS)
*
* @return
*/
public static String getCurrentDate() {
return getCurrentDate(YYYYMMDDHHMMSS);
}
/**
* 获取系统当前时间(默认格式:YYYYMMDDHHMMSS)
*
* @return
*/
public static long getCurrentDateLong() {
return getCurrentDateLong(YYYYMMDDHHMMSS);
}
/**
* 获取指定时间的日期(指定分钟和秒)
*
* @param minute
* @param second
* @param pattern
* @return
*/
public static String getDay(int minute, int second, String pattern) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, second);
cal.set(Calendar.MILLISECOND, 0);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定时间月份第一天
*
* @param pattern
* @return
*/
public static String getMonthFirstDay(String pattern) {
Calendar cal = Calendar.getInstance();
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定时间月份第一天
*
* @param pattern
* @return
*/
public static String getMonthFirstDay(Date date, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定时间月份第一天
*
* @param pattern
* @return
*/
public static String getMonthLastDay(String pattern) {
Calendar cal = Calendar.getInstance();
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 0);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定日期月份最后一天
* @param date
* @param pattern
* @return
*/
public static String getMonthLastDay(Date date, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, last);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定年月的最后一天
* @param year
* @param month
* @return
*/
public static String getMonthLastDay(int year, int month, String pattern) {
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR, year);
//设置月份
cal.set(Calendar.MONTH, month-1);
//获取某月最大天数
int lastDay = cal.getActualMaximum(Calendar.DATE);
//设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
//格式化日期
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定时间的日期(指定分钟和秒)
*
* @param minute
* @param second
* @param pattern
* @return
*/
public static long getDayLong(int minute, int second, String pattern) {
return Long.parseLong(getDay(minute, second, pattern));
}
/**
* 获取指定时间的日期(指定分钟和秒,默认格式:YYYYMMDDHHMMSS)
*
* @param minute
* @param second
* @return
*/
public static String getDay(int minute, int second) {
return getDay(minute, second, YYYYMMDDHHMMSS);
}
/**
* 获取指定时间的日期(指定分钟和秒,默认格式:YYYYMMDDHHMMSS)
*
* @param minute
* @param second
* @return
*/
public static long getDayLong(int minute, int second) {
return getDayLong(minute, second, YYYYMMDDHHMMSS);
}
/**
* 获取指定毫秒之后的时间
*
* @param
* @return
*/
public static String getNextDate(long miliseconds, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(cal.getTime().getTime() + miliseconds);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定毫秒之后的时间(默认格式:YYYYMMDDHHMMSS)
*
* @param miliseconds
* @return
*/
public static long getNextDateLong(long miliseconds) {
return Long.parseLong(getNextDate(miliseconds, YYYYMMDDHHMMSS));
}
/**
* 获取指定毫秒之后的时间
*
* @param miliseconds
* @param pattern
* @return
*/
public static long getNextDateLong(long miliseconds, String pattern) {
return Long.parseLong(getNextDate(miliseconds, pattern));
}
/**
* 获取指定毫秒之后的时间
*
* @param
* @return
*/
public static String getNextDate(Date date, long miliseconds, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date.getTime() + miliseconds);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定毫秒之后的时间
*
* @param
* @return
*/
public static long getNextDateLong(Date date, long miliseconds, String pattern) {
return Long.parseLong(getNextDate(date, miliseconds, pattern));
}
/**
* 获取指定毫秒之后的时间
*
* @param
* @return
*/
public static String getNextDate(Date date, long miliseconds) {
return getNextDate(date, miliseconds, YYYYMMDDHHMMSS);
}
/**
* 获取指定毫秒之后的时间
*
* @param
* @return
*/
public static long getNextDateLong(Date date, long miliseconds) {
return Long.parseLong(getNextDate(date, miliseconds));
}
/**
* 获取指定毫秒之前的时间
*
* @param
* @return
*/
public static String getPreDate(Date date, long miliseconds, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date.getTime() - miliseconds);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定毫秒之前的时间
*
* @param miliseconds
* @return
*/
public static long getPreDateLong(Date date, long miliseconds, String pattern) {
return Long.parseLong(getPreDate(date, miliseconds, pattern));
}
/**
* 获取指定毫秒之前的时间(默认格式:YYYYMMDDHHMMSS)
*
* @param miliseconds
* @return
*/
public static String getPreDate(Date date, long miliseconds) {
return getPreDate(date, miliseconds, YYYYMMDDHHMMSS);
}
/**
* 获取指定毫秒之前的时间
*
* @param
* @return
*/
public static long getPreDateLong(Date date, long miliseconds) {
return Long.parseLong(getPreDate(date, miliseconds));
}
/**
* 获取指定天之前的时间(默认格式:YYYYMMDD)
*
* @param day
* @return
*/
public static String getPreDay(int day) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) - day);
DateFormat format = getDateFormat(YYYYMMDD);
return format.format(cal.getTime());
}
/**
* 获取指定天之前的时间
*
* @param day
* @param pattern
* @return
*/
public static String getPreDay(int day, String pattern) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) - day);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定天数前到当前时间的日期数组
* @param day
* @return
*/
public static List<String> getDayRangeArray(int day) {
List<String> dates=new ArrayList<>();
for(int i=0;i<=day;i++){
dates.add(getPreDay(day-i,YYYY_MM_DD));
}
return dates;
}
/**
* 获取指定天之前的时间
*
* @param date
* @param day
* @return
*/
public static Date getPreDay(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) - day);
return cal.getTime();
}
/**
* 获取指定天之前的时间
*
* @param date
* @param day
* @param pattern
* @return
*/
public static String getPreDay(Date date, int day, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) - day);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定年之前的时间
*
* @param year
* @return
*/
public static String getPreYear(int year, String pattern) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) - year);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定月之前的时间
*
* @param month
* @return
*/
public static String getPreMonth(int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - month);
DateFormat format = getDateFormat(YYYYMMDD);
return format.format(cal.getTime());
}
/**
* 获取指定月之前的时间
*
* @param month
* @return
*/
public static String getPreMonth(String date, int month, String pattern) throws ParseException {
Calendar cal = Calendar.getInstance();
cal.setTime(DateTimeUtil.parse(date, DateTimeUtil.YYYY_MM));
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - month);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定月之前的时间
*
* @param month
* @param pattern
* @return
*/
public static String getPreMonth(int month, String pattern) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - month);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定日期之前的月份时间
* @param date
* @param month
* @param pattern
* @return
*/
public static String getPreMonth(Date date, int month, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - month);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定月之前的时间
*
* @param month
* @param pattern
* @return
*/
public static long getPreMonthLong(int month, String pattern) {
return Long.parseLong(getPreMonth(month, pattern));
}
/**
* 获取指定天之后的时间
*
* @param day
* @param pattern
* @return
*/
public static String getNextDay(int day, String pattern) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) + day);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定天之后的时间(默认格式:YYYYMMDD)
*
* @param day
* @return
*/
public static String getNextDay(int day) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) + day);
DateFormat format = getDateFormat(YYYYMMDD);
return format.format(cal.getTime());
}
/**
* 获取指定毫秒之前的时间
*
* @param
* @return
*/
public static String getPreDate(long miliseconds, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(cal.getTime().getTime() - miliseconds);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定毫秒之前的时间戳
*
* @param
* @return
*/
public static long getPreDateTimestamp(long miliseconds) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(cal.getTime().getTime() - miliseconds);
return cal.getTime().getTime();
}
/**
* 获取指定毫秒之前的时间并返回指定类型值
*
* @param miliseconds
* @param pattern
* @return
*/
public static long getPreDateLong(long miliseconds, String pattern) {
return Long.parseLong(getPreDate(miliseconds, pattern));
}
/**
* 获取指定毫秒之前的时间(默认格式:YYYYMMDDHHMMSS)
*
* @param
* @return
*/
public static String getPreDate(long miliseconds) {
return getPreDate(miliseconds, YYYYMMDDHHMMSS);
}
/**
* 获取指定毫秒之前的时间(默认格式:YYYYMMDDHHMMSS)
*
* @param miliseconds
* @return
*/
public static long getPreDateLong(long miliseconds) {
return getPreDateLong(miliseconds, YYYYMMDDHHMMSS);
}
/**
* 格式化日期
*
* @param date
* @param pattern
* @return
*/
public static String format(Date date, String pattern) {
return getDateFormat(pattern).format(date);
}
/**
* 格式化日期
*
* @param date
* @param pattern
* @return
*/
public static long formatToLong(Date date, String pattern) {
return Long.parseLong(format(date, pattern));
}
/**
* 格式化日期
*
* @param source
* @param pattern
* @return
* @throws ParseException
*/
public static Date parse(String source, String pattern) throws ParseException {
return getDateFormat(pattern).parse(source);
}
/**
* 格式化日期
*
* @param source
* @return
* @throws ParseException
*/
public static Date parse(String source) throws ParseException {
return getDateFormat(YYYYMMDD).parse(source);
}
/**
*
* @param source
* @param beforePattern
* @param afterPattern
* @return
* @throws ParseException
*/
public static String parseStr(String source, String beforePattern,String afterPattern) throws ParseException {
Date date=getDateFormat(beforePattern).parse(source);
DateFormat format = new SimpleDateFormat(afterPattern);
return format.format(date);
}
/**
* 判断一个时间是否在一个时间段内
*
* @param date
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public static boolean isInDate(Date date, Date startDate, Date endDate) throws ParseException {
return date.getTime() >= startDate.getTime() && date.getTime() <= endDate.getTime();
}
/**
* 获取当天的起始时间
*
* @return 时间戳
*/
public static long getCurrentDayStartTime() {
return getCurrentDayTime(0, 0, 0, 0);
}
/**
* 获取当天的结束时间
*
* @return 时间戳
*/
public static long getCurrentDayEndTime() {
return getCurrentDayTime(23, 59, 59, 999);
}
/**
* 获取当天的时间
*
* @param hour
* @param minute
* @param second
* @param millisecond
* @return
*/
public static long getCurrentDayTime(int hour, int minute, int second, int millisecond) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, millisecond);
return calendar.getTime().getTime();
}
/**
* 获取当天的时间
*
* @return
*/
public static String getCurrentDayTime(int hour, int minute, int second, int millisecond, String pattern) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, millisecond);
return format(calendar.getTime(), pattern);
}
/**
* 获取指定周之前周一的时间
*
* @param week
* @param pattern
* @return
*/
public static String getPreWeekMonday(int week, String pattern) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, week*7);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 获取指定周之前周日的时间
*
* @param week
* @param pattern
* @return
*/
public static String getPreWeekSunday(int week, String pattern) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, week*7);
cal.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
DateFormat format = getDateFormat(pattern);
return format.format(cal.getTime());
}
/**
* 时间差-秒
* @param startDate
* @param endDate
* @return
*/
public static double getDateDifferenceSecond(Date startDate,Date endDate){
long difference=endDate.getTime()-startDate.getTime();
double second = (double) difference / 1000;
return second ;
}
public static List<String> getDayRangeArray(String startTime, String endTime) throws ParseException {
return getDayRangeArray(startTime,endTime,YYYY_MM_DD);
}
public static List<String> getDayRangeArray(String startTime, String endTime, String sourcePattern, String outPattern) throws ParseException {
// 返回的日期集合
List<String> days = new ArrayList<>();
Date start = getDateFormat(sourcePattern).parse(startTime);
Date end = getDateFormat(sourcePattern).parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
days.add(getDateFormat(outPattern).format(tempStart.getTime()));
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
return days;
}
/**
* 获取月
*
* @param source
* @param pattern
* @return
* @throws ParseException
*/
public static int getMonth(String source, String pattern) throws ParseException {
Date date=getDateFormat(pattern).parse(source);
Calendar calender = Calendar.getInstance();
calender.setTime(date);
return calender.get(Calendar.MONTH)+1;
}
/**
* 获取周
*
* @param source
* @param pattern
* @return
* @throws ParseException
*/
public static int getWeek(String source, String pattern) throws ParseException {
Date date=getDateFormat(pattern).parse(source);
Calendar calender = Calendar.getInstance();
calender.setFirstDayOfWeek(Calendar.MONDAY);
calender.setTime(date);
return calender.get(Calendar.WEEK_OF_YEAR);
}
/**
* 获取周区间值
* @param startTime
* @param endTime
* @return
* @throws ParseException
*/
public static List<String> getWeekRangeArray(String startTime, String endTime) throws ParseException {
return getWeekRangeArray(startTime,endTime,YYYY_MM_DD);
}
public static List<String> getWeekRangeArray(String startTime, String endTime,String pattern) throws ParseException {
List<String> weeks = new ArrayList<>();
Date start = getDateFormat(pattern).parse(startTime);
Date end = getDateFormat(pattern).parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setFirstDayOfWeek(Calendar.MONDAY);
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
while (tempStart.before(tempEnd)) {
weeks.add(String.valueOf(tempStart.get(Calendar.WEEK_OF_YEAR)));
tempStart.add(Calendar.WEEK_OF_YEAR, 1);
}
if(tempStart.get(Calendar.WEEK_OF_YEAR)==tempEnd.get(Calendar.WEEK_OF_YEAR)){
weeks.add(String.valueOf(tempStart.get(Calendar.WEEK_OF_YEAR)));
}
return weeks;
}
/**
* 获取月区间值
* @param startTime
* @param endTime
* @return
* @throws ParseException
*/
public static List<String> getMonthRangeArray(String startTime, String endTime) throws ParseException {
return getMonthRangeArray(startTime,endTime,YYYY_MM_DD);
}
public static List<String> getMonthRangeArray(String startTime, String endTime,String pattern) throws ParseException {
List<String> months = new ArrayList<>();
Date start = getDateFormat(pattern).parse(startTime);
Date end = getDateFormat(pattern).parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
tempStart.set(tempStart.get(Calendar.YEAR), tempStart.get(Calendar.MONTH), 1);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.set(tempEnd.get(Calendar.YEAR), tempEnd.get(Calendar.MONTH), 2);
while (tempStart.before(tempEnd)) {
months.add(String.valueOf(tempStart.get(Calendar.MONTH)+1));
tempStart.add(Calendar.MONTH, 1);
}
return months;
}
/**
* 获取两个时间的月份差的集合, 结果格式为yyyyMM
* @param startTime
* @param endTime
* @param pattern
* @return
* @throws ParseException
*/
public static List<String> getMonthRangeList(String startTime, String endTime,String pattern) throws ParseException {
List<String> months = new ArrayList<>();
Date start = getDateFormat(pattern).parse(startTime);
Date end = getDateFormat(pattern).parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
tempStart.set(tempStart.get(Calendar.YEAR), tempStart.get(Calendar.MONTH), 1);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.set(tempEnd.get(Calendar.YEAR), tempEnd.get(Calendar.MONTH), 2);
while (tempStart.before(tempEnd)) {
months.add(tempStart.get(Calendar.YEAR) + String.format("%02d", tempStart.get(Calendar.MONTH)+1));
tempStart.add(Calendar.MONTH, 1);
}
return months;
}
/**
* 获取两个时间的月份差的集合, 结果格式为yyyyMM
* @param startTime
* @param endTime
* @param pattern
* @return
* @throws ParseException
*/
public static List<String> getMonthRangeList(String startTime, String endTime,String pattern, String outPattern) throws ParseException {
List<String> months = new ArrayList<>();
Date start = getDateFormat(pattern).parse(startTime);
Date end = getDateFormat(pattern).parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
tempStart.set(tempStart.get(Calendar.YEAR), tempStart.get(Calendar.MONTH), 1);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.set(tempEnd.get(Calendar.YEAR), tempEnd.get(Calendar.MONTH), 2);
while (tempStart.before(tempEnd)) {
months.add(DateTimeUtil.parseStr(tempStart.get(Calendar.YEAR) + String.format("%02d", tempStart.get(Calendar.MONTH) + 1), YYYYMM, outPattern));
// months.add(tempStart.get(Calendar.YEAR) + String.format("%02d", tempStart.get(Calendar.MONTH)+1));
tempStart.add(Calendar.MONTH, 1);
}
return months;
}
public static void main(String[] args) {
try {
List<String> ll=getMonthRangeArray("2019-01-26","2020-01-14");
for (String l:ll){
System.out.println(l);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 获取日期间区间日期
* @param startTime
* @param endTime
* @param pattern
* @return
* @throws ParseException
*/
public static List<String> getDayRangeArray(String startTime, String endTime,String pattern) throws ParseException {
// 返回的日期集合
List<String> days = new ArrayList<>();
Date start = getDateFormat(YYYY_MM_DD).parse(startTime);
Date end = getDateFormat(YYYY_MM_DD).parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
days.add(getDateFormat(pattern).format(tempStart.getTime()));
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
return days;
}
/**
* 获取读取数据的起止时间
* @return 起止时间数组 0:开始时间 1:结束时间
*/
public static String [] getStartAndEndTime(int beforeSeconds) throws ParseException {
String endTime=getCurrentDate(YYYY_MM_DD_HH_MM_SS);
String startTime=getPreDate(getDateFormat(YYYY_MM_DD_HH_MM_SS).parse(endTime),beforeSeconds*1000,YYYY_MM_DD_HH_MM_SS);
return new String[]{startTime,endTime};
}
public static Date converToMongoDBDate(Date date) {
if (date == null) {
return DateTimeUtil.getMongoDBDate();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, +8);
return cal.getTime();
}
public static Date getMongoDBDate() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.HOUR_OF_DAY, +8);
return cal.getTime();
}
/**
* 时间差-天
* @param startDate
* @param endDate
* @return
*/
public static int daysBetween(String startDate,String endDate,String pattern) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat(pattern);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(startDate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(endDate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
public static String getTimeBetweenStr(Date date){
String result="";
int day = 0;
try {
String start = format(date,DateTimeUtil.YYYY_MM_DD);
String end = format(new Date(),DateTimeUtil.YYYY_MM_DD);
day = daysBetween(start,end, DateTimeUtil.YYYY_MM_DD);
} catch (ParseException e) {
e.printStackTrace();
}
if(day>0 && day<365){
result = day +"天前";
}else if(day>=365){
day = day/365;
result = day +"年前";
}
return result;
}
}
比较好用的时间工具类
原创
©著作权归作者所有:来自51CTO博客作者一直是菜鸟的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章