Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  •  普罗旺斯
  • 负责帅就完事了
  • 写了1,493,291字

该文章投稿至Nemo社区   Java  板块 复制链接


时间日期相关操作工具类:DateTimeUtils

发布于 2018/03/23 00:35 5,002浏览 0回复 2,339




import java.util.Calendar;
import java.util.Date;

/**
* 时间日期相关操作工具
* @author: Nemo
* @date: 2018/3/23.
*/
public class DateTimeUtils {

/**
* 得到某日期在一个月中的天数
* @param date
* @return
*/
public static int getDayOfMonth(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_MONTH);
return day;
}

/**
* 得到下个月的当前号日期时间戳
* 如果下个月的最大日期小于当前日期,那么则取下个月的最大日期作为测算日期,下下个月依旧按照这个月的日期来算
* @param thisMonth
*/
public static Date getNextMonth(Date thisMonth,int day){
Calendar cal = Calendar.getInstance();
cal.setTime(thisMonth);
//月份加1
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.YEAR,cal.get(Calendar.YEAR));

//当前日期 < 需测算日期,则按这个月最大的日期来测算
Date date=cal.getTime();
int maxDay = getMaxDayByYearMonth(date);
if(day > maxDay){
cal.set(Calendar.DAY_OF_MONTH,maxDay);
}else{
cal.set(Calendar.DAY_OF_MONTH,day);
}

return cal.getTime();
}

/**
* date2date1多的天数
* @param date1
* @param date2
* @return
*/
public static int differentDays(Date date1,Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);

Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
int day1= cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);

int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
//同一年
if(year1 != year2) {
int timeDistance = 0 ;
for(int i = year1 ; i < year2 ; i ++) {
//闰年
if(i%4==0 && i%100!=0 || i%400==0) {
timeDistance += 366;
}
else {
//不是闰年
timeDistance += 365;
}
}
return timeDistance + (day2-day1) ;
}
else {
//不同年
return day2-day1;
}
}

/**
* 获得某个月最大天数
* @param now 需要测算的当前时间
* @return 某个月最大天数
*/
public static int getMaxDayByYearMonth(Date now) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
return calendar.getActualMaximum(Calendar.DATE);
}
}


点赞(0)
点了个评