package com.aapoint.util;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
public class LocalDateTimeUtil {
/**
* 比较 localDateTime2 是否在localDateTime1之前(比较大小)
* @param localDateTime1
* @param localDateTime2
* @return
*/
public static Boolean compare(LocalDateTime localDateTime1,LocalDateTime localDateTime2){
return localDateTime1.isBefore(localDateTime2);
}
/**
* 获取当前月份前/后的月份的第一天
* @param i 指定距离当前月份的时间
* @param state 状态 0.当月 1.前 2.后
* @return
*/
public static String firstDay(Integer state,Integer i){
LocalDateTime date = null;
//type 类型 0.月 1.天 2.小时 3.分钟 4.秒
date = getLocalDateTime(state,0,i);
//获取该月份的第一天
String firstDay = date.with(TemporalAdjusters.firstDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
// System.out.println("第一天为:"+firstDay);
return firstDay;
}
/**
* 获取当前月份前/后的月份的最后一天
* @param i 指定距离当前月份的时间
* @param state 状态 0.当月 1.前 2.后
* @return
*/
public static String lastDay(Integer state,Integer i){
LocalDateTime date = null;
//type 类型 0.月 1.天 2.小时 3.分钟 4.秒
date = getLocalDateTime(state,0,i);
//获取该月份的最后一天
String lastDay = date.with(TemporalAdjusters.lastDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
// System.out.println("最后一天为:"+lastDay);
return lastDay;
}
/**
* 获取当时间前/后的时间(天)
* @param i 指定距离当前月份的时间
* @param state 状态 0.当月 1.前 2.后
* @return
*/
public static String obtainDay(Integer state,Integer i){
LocalDateTime date = null;
//type 类型 0.月 1.天 2.小时 3.分钟 4.秒
date = getLocalDateTime(state,1,i);
//获取天
String day = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
// System.out.println("获取的时间为(天):"+day);
return day;
}
/**
* 获取当时间前/后的时间(小时)
* @param i 指定距离当前月份的时间
* @param state 状态 0.当月 1.前 2.后
* @return
*/
public static String obtainHours(Integer state,Integer i){
LocalDateTime date = null;
//type 类型 0.月 1.天 2.小时 3.分钟 4.秒
date = getLocalDateTime(state,2,i);
//获取该月份的最后一天
String hours = date.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
// System.out.println("获取的时间为(小时):"+hours);
return hours;
}
/**
* 获取当时间前/后的时间(小时)
* @param i 指定距离当前月份的时间
* @param state 状态 0.当月 1.前 2.后
* @return
*/
public static String obtainMinutes(Integer state,Integer i){
LocalDateTime date = null;
//type 类型 0.月 1.天 2.小时 3.分钟 4.秒
date = getLocalDateTime(state,3,i);
//获取该月份的最后一天
String minutes = date.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
// System.out.println("获取的时间为(分钟):"+minutes);
return minutes;
}
/**
* 获取当时间前/后的时间(小时)
* @param i 指定距离当前月份的时间
* @param state 状态 0.当月 1.前 2.后
* @return
*/
public static String obtainSeconds(Integer state,Integer i){
LocalDateTime date = null;
//type 类型 0.月 1.天 2.小时 3.分钟 4.秒
date = getLocalDateTime(state,4,i);
//获取该月份的最后一天
String seconds = date.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
// System.out.println("获取的时间为(秒):"+seconds);
return seconds;
}
public static void main(String[] args) {
System.out.println("当前时间为:"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
System.out.println("前一个月份的第一天为:"+LocalDateTimeUtil.firstDay(1,1));
System.out.println("前一个月份的最后一天为:"+LocalDateTimeUtil.lastDay(1,1));
System.out.println("当前时间的前一天为:"+LocalDateTimeUtil.obtainDay(1,1));
System.out.println("当前时间的后一天为:"+LocalDateTimeUtil.obtainDay(2,1));
System.out.println("当前时间的前一小时为:"+LocalDateTimeUtil.obtainHours(1,1));
System.out.println("当前时间的后一小时为:"+LocalDateTimeUtil.obtainHours(2,1));
System.out.println("当前时间的前一分钟为:"+LocalDateTimeUtil.obtainMinutes(1,1));
System.out.println("当前时间的后一分钟为:"+LocalDateTimeUtil.obtainMinutes(2,1));
System.out.println("当前时间的前一秒为:"+LocalDateTimeUtil.obtainSeconds(1,1));
System.out.println("当前时间的后一秒为:"+LocalDateTimeUtil.obtainSeconds(2,1));
}
private static LocalDateTime getLocalDateTime(Integer state,Integer type,Integer i) {
LocalDateTime date;
if(state == 0){
date = LocalDateTime.now();
}else if(state == 1){
if(type == 0) { //获取月
date = LocalDateTime.now().minusMonths(i);
}else if(type == 1){ //获取天
date = LocalDateTime.now().minusDays(i);
}else if(type == 2){ //获取小时
date = LocalDateTime.now().minusHours(i);
}else if(type == 3){ //获取分钟
date = LocalDateTime.now().minusMinutes(i);