mysql date格式化工具类_日期时间处理工具类使用

/*** 日期时间处理类

*

*@authordingxinfa

* @date 2018-08-15

**/

public classDateUtils {/*** 获取当前时间所在星期的年份

*@paramdate

*@return

*/

public static intgetYearOfWeek(Date date) {

Calendar c= newGregorianCalendar();

c.setFirstDayOfWeek(Calendar.MONDAY);

c.setMinimalDaysInFirstWeek(7);

c.setTime(date);

c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND,0);

c.set(Calendar.MILLISECOND,0);returnc.get(Calendar.YEAR);

}/*** 获取当前时间所在年的周数

*@paramdate

*@return

*/

public static intgetWeekOfYear(Date date) {

Calendar c= newGregorianCalendar();

c.setFirstDayOfWeek(Calendar.MONDAY);

c.setMinimalDaysInFirstWeek(7);

c.setTime(date);int currYear =c.get(Calendar.YEAR);int currWeek =c.get(Calendar.WEEK_OF_YEAR);

c.add(Calendar.DATE,7);int nextWeek=c.get(Calendar.WEEK_OF_YEAR);int nextYear=c.get(Calendar.YEAR);if (currYear

}else{return currWeek

}

}/*** 获取确定年 的最大周数

*@paramyear

*@return

*/

public static int getMaxWeekNumOfYear(intyear) {

Calendar c= newGregorianCalendar();

c.set(year, Calendar.DECEMBER,31, 23, 59, 59);returngetWeekOfYear(c.getTime());

}/*** 获取某年的第几周的开始日期

*@paramyear

*@paramweek

*@return

*/

public static Date getFirstDayOfWeek(int year, intweek) {

Calendar c= newGregorianCalendar();

c.setFirstDayOfWeek(Calendar.MONDAY);

c.setMinimalDaysInFirstWeek(7);

c.set(Calendar.YEAR, year);

c.set(Calendar.WEEK_OF_YEAR, week);

c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

Calendar cal=(GregorianCalendar) c.clone();

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE,0);

cal.set(Calendar.SECOND,0);

cal.set(Calendar.MILLISECOND,0);returngetFirstDayOfWeek(cal.getTime());

}/*** 获取某年的第几周的结束日期

*@paramyear

*@paramweek

*@return

*/

public static Date getLastDayOfWeek(int year, intweek) {

Calendar c= newGregorianCalendar();

c.setFirstDayOfWeek(Calendar.MONDAY);

c.setMinimalDaysInFirstWeek(7);

c.set(Calendar.YEAR, year);

c.set(Calendar.WEEK_OF_YEAR, week);

c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);

Calendar cal=(GregorianCalendar) c.clone();

cal.set(Calendar.HOUR_OF_DAY,23);

cal.set(Calendar.MINUTE,59);

cal.set(Calendar.SECOND,59);

cal.set(Calendar.MILLISECOND,999);returngetLastDayOfWeek(cal.getTime());

}/*** 获取当前时间所在周的开始日期

*@paramdate

*@return

*/

public staticDate getFirstDayOfWeek(Date date) {

Calendar c= newGregorianCalendar();

c.setFirstDayOfWeek(Calendar.MONDAY);

c.setMinimalDaysInFirstWeek(7);

c.setTime(date);

c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND,0);

c.set(Calendar.MILLISECOND,0);returnc.getTime();

}/*** 获取当前时间所在周的结束日期

*@paramdate

*@return

*/

public staticDate getLastDayOfWeek(Date date) {

Calendar c= newGregorianCalendar();

c.setFirstDayOfWeek(Calendar.MONDAY);

c.setMinimalDaysInFirstWeek(7);

c.setTime(date);

c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()+ 6);

c.set(Calendar.HOUR_OF_DAY,23);

c.set(Calendar.MINUTE,59);

c.set(Calendar.SECOND,59);

c.set(Calendar.MILLISECOND,999);returnc.getTime();

}/*** 获取当前时间所在月份的开始日期

*@paramdate

*@return

*/

public staticDate getFirstDayOfMonth(Date date) {

Calendar c= newGregorianCalendar();

c.setTime(date);

c.set(Calendar.DAY_OF_MONTH,1);

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND,0);

c.set(Calendar.MILLISECOND,0);returnc.getTime();

}/*** 获取当前时间所在月份的结束日期

*@paramdate

*@return

*/

public staticDate getLastDayOfMonth(Date date) {

Calendar c= newGregorianCalendar();

c.setTime(date);//获取某月最大天数

int lastDay =c.getActualMaximum(Calendar.DAY_OF_MONTH);

c.set(Calendar.DAY_OF_MONTH, lastDay);

c.set(Calendar.HOUR_OF_DAY,23);

c.set(Calendar.MINUTE,59);

c.set(Calendar.SECOND,59);

c.set(Calendar.MILLISECOND,999);returnc.getTime();

}/*** 获取某年第几月的开始日期

*@paramyear

*@parammonth

*@return

*/

public static Date getFirstDayOfMonth(int year, intmonth) {

Calendar cal= newGregorianCalendar();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH,month);

cal.set(Calendar.DAY_OF_MONTH,1);

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE,0);

cal.set(Calendar.SECOND,0);

cal.set(Calendar.MILLISECOND,0);returncal.getTime();

}/*** 获取某年第几月的结束日期

*@paramyear

*@parammonth

*@return

*/

public static Date getLastDayOfMonth(int year, intmonth) {

Calendar cal= newGregorianCalendar();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH,month);//获取某月最大天数

int lastDay =cal.getActualMaximum(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_MONTH, lastDay);

cal.set(Calendar.HOUR_OF_DAY,23);

cal.set(Calendar.MINUTE,59);

cal.set(Calendar.SECOND,59);

cal.set(Calendar.MILLISECOND,999);returncal.getTime();

}/*** 获取今天开始时间

*@return

*/

public staticDate getTodayStartTime() {

Calendar cal= newGregorianCalendar();

cal.setTime(newDate());

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE,0);

cal.set(Calendar.SECOND,0);

cal.set(Calendar.MILLISECOND,0);returncal.getTime();

}/*** 获取今天结束时间

*@return

*/

public staticDate getTodayEndTime() {

Calendar cal= newGregorianCalendar();

cal.setTime(newDate());

cal.set(Calendar.HOUR_OF_DAY,23);

cal.set(Calendar.MINUTE,59);

cal.set(Calendar.SECOND,59);

cal.set(Calendar.MILLISECOND,999);returncal.getTime();

}/*** 获取某一时间开始时间

*@paramdate 某天的某一时间

*@return

*/

public staticDate getOneDayStartTime(Date date) {

Calendar cal= newGregorianCalendar();

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);returncal.getTime();

}/*** 获取某一时间结束时间

*@paramdate 某天的某一时间

*@return

*/

public staticDate getOneDayEndTime(Date date) {

Calendar cal= newGregorianCalendar();

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);returncal.getTime();

}/*** date2比date1多的天数

*@paramdate1

*@paramdate2

*@return

*/

public static intdifferentDays(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){//闰年

timeDistance += 366;

}else if (i%400==0) {//闰年

timeDistance += 366;

}else{//非闰年

timeDistance += 365;

}

}return timeDistance + (day2-day1) ;

}else{//同一年份

return day2-day1;

}

}/*** 获取两个日期相差的月数

*@parammaxTime 较大的日期

*@paramminTime 较小的日期

*@return如果d1>d2返回 月数差 否则返回0*/

public static intdifferentMonths( Date minTime,Date maxTime) {

Calendar c1=Calendar.getInstance();

Calendar c2=Calendar.getInstance();

c1.setTime(maxTime);

c2.setTime(minTime);if(c1.getTimeInMillis()

}int year1 =c1.get(Calendar.YEAR);int year2 =c2.get(Calendar.YEAR);int month1 =c1.get(Calendar.MONTH);int month2 =c2.get(Calendar.MONTH);int monthInterval =0;int yearInterval =0;if (month1>=month2){

yearInterval= year1 -year2;

monthInterval= month1 -month2 ;

}else{

yearInterval= year1 - year2-1;

monthInterval= (month1+12) -month2 ;

}return yearInterval * 12 +monthInterval;

}/*** 将毫秒数 转换成 格式化时间

*@paramtime

*@return

*/

public static String formatMillisecond(longtime){return formatSecond(time/1000);

}/*** 将秒数 转换成 格式化时间

*@paramtime

*@return

*/

public static String formatSecond(longtime){return formatSecond(time,"天" ,"小时","分钟","秒");

}/*** 将秒数 转换成 格式化时间

*@paramtime

*@return

*/

public static String formatSecond(longtime,String dayFormat,String hourFormat,String minuteFormat,String secondFormat) {int mi = 60;int hh = mi * 60;int dd = hh * 24;long day = time /dd;long hour = (time%dd) /hh;long minute = (time%hh) /mi;long second = time%mi;

StringBuilder formatTime=newStringBuilder();if (day>0){

formatTime.append(day).append(dayFormat);

}if (hour>0 || ((second>0 || minute>0)&& day > 0)){

formatTime.append(hour).append(hourFormat);

}if (minute>0 ||((hour>0 ||day > 0) && second>0)){

formatTime.append(minute).append(minuteFormat);

}if (second>0){

formatTime.append(second).append(secondFormat);

}returnformatTime.toString();

}/***

* 获取时间区间 月份开始|结束 时间列表

* 示例

* param

* startLocalDateTime 2020-03-02 12:22:22

* endLocalDateTime 2020-05-22 18:18:18

* return

* 2020-03-02 12:22:22,2020-03-31 23:59:59.999

* 2020-04-01 00:00:00,2020-04-30 23:59:59.999

* 2020-05-01 00:00:00,2020-05-22 18:18:18

*@paramstartLocalDateTime

*@paramendLocalDateTime

*@return

*/

public static ListgetLocalDateTimeIntervalMonthStartEndTime(LocalDateTime startLocalDateTime,LocalDateTime endLocalDateTime){if(startLocalDateTime.isAfter(endLocalDateTime)){

LocalDateTime temp=startLocalDateTime;

startLocalDateTime=endLocalDateTime;

endLocalDateTime=temp;

}

List localDateTimeList=new ArrayList<>();

LocalDateTime currDateTime=startLocalDateTime;

LocalDateTime currMonthEndDateTime=LocalDateTime.of(LocalDate.of(currDateTime.getYear(),currDateTime.getMonth(),currDateTime.getDayOfMonth()), LocalTime.MAX).with(TemporalAdjusters.lastDayOfMonth());if(currMonthEndDateTime.isBefore(endLocalDateTime)) {

localDateTimeList.add(newLocalDateTime[]{currDateTime, currMonthEndDateTime});

}else{

localDateTimeList.add(newLocalDateTime[]{startLocalDateTime, endLocalDateTime});

}do{

currDateTime=LocalDateTime.of(LocalDate.of(currDateTime.getYear(),currDateTime.getMonth(),currDateTime.getDayOfMonth()), LocalTime.MIN).with(TemporalAdjusters.firstDayOfNextMonth());

currMonthEndDateTime=LocalDateTime.of(LocalDate.of(currDateTime.getYear(),currDateTime.getMonth(),currDateTime.getDayOfMonth()), LocalTime.MAX).with(TemporalAdjusters.lastDayOfMonth());if(currMonthEndDateTime.isBefore(endLocalDateTime)) {

localDateTimeList.add(newLocalDateTime[]{currDateTime, currMonthEndDateTime});

}else{if(currDateTime.isBefore(endLocalDateTime)) {

localDateTimeList.add(newLocalDateTime[]{currDateTime, endLocalDateTime});

}

}

}while(currMonthEndDateTime.isBefore(endLocalDateTime));returnlocalDateTimeList;

}public static voidmain(String[] args) {

List localDateTimeList=getLocalDateTimeIntervalMonthStartEndTime(LocalDateTime.of(2020,5,30,12,12,12,256),LocalDateTime.of(2020,5,30,12,12,12,888));

System.out.println(localDateTimeList.toArray().toString());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值