public class LocalDateUtil {
public static String getCron(LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
SimpleDateFormat sdf = new SimpleDateFormat("ss mm HH dd MM ? yyyy");
return sdf.format(date);
}
public static String getyyyyMMdd(LocalDateTime localDateTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return localDateTime.format(formatter);
}
public static String getdd() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd");
return LocalDate.now().format(formatter);
}
public static String getdd(int day) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd");
return LocalDate.now().plusDays(day).format(formatter);
}
public static String getHHmm() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
return LocalDateTime.now().format(formatter);
}
public static String getHHmm(LocalDateTime localDateTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
return localDateTime.format(formatter);
}
public static String getYYYYMMdd() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return LocalDate.now().format(formatter);
}
public static String getYYYYMMddFilePath() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
return LocalDate.now().format(formatter);
}
public static String getyyyyMMdd(LocalDate localDate) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return localDate.format(formatter);
}
public static long getStartSecond(LocalDate localDate) {
LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.of(0, 0, 0));
return localDateTime.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
}
public static long getEndSecond(LocalDate localDate) {
LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.of(23, 59, 59));
return localDateTime.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
}
public static LocalDate getyyyyMMdd(String YYYYMMdd){
try {
String[] split = YYYYMMdd.split("-");
return LocalDate.of(Integer.valueOf(split[0]), Integer.valueOf(split[1]), Integer.valueOf(split[2]));
}catch (Exception e){
throw new InfoException("日期格式有误,请检查");
}
}
public static LocalDateTime getyyyyMMddTime(String YYYYMMdd) {
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-dd");
// LocalDate parse = LocalDate.parse(YYYYMMdd, formatter);
return LocalDateTime.parse(YYYYMMdd, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
public static String getYYYYMMddNumber() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
return LocalDateTime.now().format(formatter);
}
public static String getYYYYMMddmmNumber() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddmm");
return LocalDateTime.now().format(formatter);
}
public static String getYYYYMMddHHmmss() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return LocalDateTime.now().format(formatter);
}
public static String getyyyyMMddHHmmss(LocalDateTime localDateTime) {
if (CheckUtil.isEmpty(localDateTime)) return null;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return localDateTime.format(formatter);
}
public static String getyyyyMMddHHmmss(Date date) {
if (CheckUtil.isEmpty(date)) return null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(date);
}
public static LocalDateTime getyyyyMMddHHmmss(String charSequence) {
return LocalDateTime.parse(charSequence);
}
public static String getYYYYMMddHHmmssNumber() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
return LocalDateTime.now().format(formatter);
}
public static void compareDate(String startDate, String endDate) {
LocalDateTime parse1 = LocalDateTime.parse(startDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime parse2 = LocalDateTime.parse(endDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
if (parse1.isAfter(parse2)){
throw new InfoException("开始时间不可大于结束时间!");
}
}
public static LocalDateTime beginOfYear(LocalDateTime now) {
return LocalDateTime.of(now.getYear(), 1, 1, 0, 0, 0);
}
public static LocalDateTime endOfYear(LocalDateTime now) {
return LocalDateTime.of(now.getYear(), 12, 31, 23, 59, 59);
}
public static LocalDateTime beginOfQuarter(LocalDateTime now) {
int i = (now.getMonthValue() - 1) / 3 * 3 + 1;
return LocalDateTime.of(now.getYear(), i, 1, 0, 0, 0);
}
public static LocalDateTime endOfQuarter(LocalDateTime now) {
int i = (now.getMonthValue() - 1) / 3 * 3 + 3;
LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), i, 1, 23, 59, 59);
return localDateTime.with(TemporalAdjusters.lastDayOfMonth());
}
public static LocalDateTime beginOfMonth(LocalDateTime now) {
LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), 1, 0, 0, 0);
return localDateTime.with(TemporalAdjusters.firstDayOfMonth());
}
public static LocalDateTime endOfMonth(LocalDateTime now) {
LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), 1, 23, 59, 59);
return localDateTime.with(TemporalAdjusters.lastDayOfMonth());
}
public static Long between(LocalDateTime beginDate, LocalDateTime endDate) {
Period between = Period.between(beginDate.toLocalDate(), endDate.toLocalDate());
return (long) between.getDays();
}
public static LocalDateTime beginOfWeek(LocalDateTime now) {
DayOfWeek[] values = DayOfWeek.values();
LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), 1, 0, 0, 0);
return localDateTime.with(values[0]);
}
public static LocalDateTime endOfWeek(LocalDateTime minusWeeks) {
DayOfWeek[] values = DayOfWeek.values();
LocalDateTime localDateTime = LocalDateTime.of(minusWeeks.getYear(), minusWeeks.getMonthValue(), 1, 23, 59, 59);
return localDateTime.with(values[6]);
}
public static LocalDateTime getBeginOfLastDay(LocalDateTime now) {
now = now.plusDays(-1);
return LocalDateTime.of(now.getYear(), now.getMonthValue(), now.getDayOfMonth(), 0, 0, 0);
}
public static LocalDateTime getEndOfLastDay(LocalDateTime now) {
now = now.plusDays(-1);
return LocalDateTime.of(now.getYear(), now.getMonthValue(), now.getDayOfMonth(), 23, 59, 59);
}
public static boolean isLeapYear(Integer year) {
if ((year & 3) != 0) {
return false;
}
return (year % 100 != 0) || (year % 400 == 0); // Gregorian
}
//一天剩余的分钟数
public static int getDayOfLastM(){
LocalDateTime now = LocalDateTime.now();
LocalDateTime time = LocalDateTime.of(now.getYear(), now.getMonthValue(), now.getDayOfMonth(), 23, 59, 59);
long second = time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
long epochSecond = now.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
long m = (second - epochSecond) / 60;
return (int)m;
}
public static void main(String[] args) {
System.out.println(getHHmm());
}
// public static void main(String[] args) {
// LocalDateTime time = LocalDateTime.now();
// int i =(3- 1)/3 * 3 + 1;
// System.out.println(i);
// System.out.println(time.toString()); //字符串表示
// System.out.println(time.toLocalTime()); //获取时间(LocalTime)
// System.out.println(time.toLocalDate()); //获取日期(LocalDate)
// System.out.println(time.getDayOfMonth()); //获取当前时间月份的第几天
// System.out.println(time.getDayOfWeek()); //获取当前周的第几天
// System.out.println(time.getDayOfYear()); //获取当前时间在该年属于第几天
// System.out.println(time.getHour());
// System.out.println(time.getMinute());
// System.out.println(time.getMonthValue());
// System.out.println(time.getMonth());
// System.out.println("-----------------------------------");
// //格式化输出
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY/MM/dd HH:mm:ss");
// System.out.println(time.format(formatter));
// //构造时间
// LocalDateTime startTime = LocalDateTime.of(2018, 1, 1, 20, 31, 20);
// LocalDateTime endTime = LocalDateTime.of(2018, 1, 3, 20, 31, 20);
// //比较时间
// System.out.println(time.isAfter(startTime));
// System.out.println(time.isBefore(endTime));
//
// //时间运算,相加相减
// System.out.println(time.plusYears(2)); //加2年
// System.out.println(time.plusDays(2)); //加两天
// System.out.println(time.minusYears(2)); //减两年
// System.out.println(time.minusDays(2)); //减两天
//
// //获取毫秒数(使用Instant)
// System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
// //获取秒数(使用Instant)
// System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond());
// }
}
类型转换
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.TimeZone;
LocalDateTime 转 Date
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
System.out.println("LocalDateTime = " + localDateTime);
System.out.println("Date = " + date);
Date 转 LocalDateTime
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
System.out.println("Date = " + date);
System.out.println("LocalDateTime = " + localDateTime);
时间差
import java.time.*;
public static void main(String[] args) {
LocalDateTime time1 = LocalDateTime.of(2020, 1, 7, 10, 30, 30);
LocalDateTime time2 = LocalDateTime.of(2020, 1, 7, 11, 30, 30);
Duration between = Duration.between(time1, time2);
long seconds = between.getSeconds();
System.out.println(between.toMillis());// 毫秒
System.out.println(seconds);
System.out.println(between.toMinutes());
System.out.println(between.toHours());
System.out.println(between.toDays());
}
DATE日期计算
import java.util.Calendar;
import java.util.Date;
// 当前时间
Date date = new Date();
//Calendar 类计算时间
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
//加两小时
rightNow.add(Calendar.HOUR,2);
Date time = rightNow.getTime();
//减十天
rightNow.add(Calendar.DAY_OF_YEAR, -10);