LocalDateTime \ LocalTime \ LocalDate
整理整理API以后直接来翻,毕竟人老了,记性不够!哈哈!!
spring转换时间工具类
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyMMdd");
//yyyy代表年(yy代表后两位) MM 代表月份(千万不能用mm)dd 代表天
LocalDate localDate = LocalDate.now(); //当前日期
String localDateFormat = localDate.format(dateTimeFormatter);
System.out.println(localDateFormat); //value : 230614
dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm:ss");
// hh 代表小时 mm 代表分(千万不能用MM) ss 代表秒
LocalTime localTime = LocalTime.now(); //当前时间
String localTimeFormat = localTime.format(dateTimeFormatter);
System.out.println(localTimeFormat); //value : 05:44:10
dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss");
//这里的 mm、MM 可以随便用,只要位置对 但是推荐大小写和前面两种保持一致 hh、HH 是代表十二小时制还是 二十四小时制
LocalDateTime localDateTime = LocalDateTime.now(); //当前日期时间
String localDateTimeFormat = localDateTime.format(dateTimeFormatter);
System.out.println(localDateTimeFormat); //value : 20230614 05:44:10
//最大值最小值 -- 感觉没啥用
LocalDate min = LocalDate.MIN;
LocalTime min1 = LocalTime.MIN;
LocalDateTime min2 = LocalDateTime.MIN;
System.out.println(min); //value : -999999999-01-01
System.out.println(min1); //value : 00:00
System.out.println(min2); //value : -999999999-01-01T00:00
LocalDate max = LocalDate.MAX;
LocalTime max1 = LocalTime.MAX;
LocalDateTime max2 = LocalDateTime.MAX;
System.out.println(max); //value : -999999999-01-01
System.out.println(max1); //value : 00:00
System.out.println(max2); //value : -999999999-01-01T00:00
具体的api使用:
// 以下均以 LocalDateTime 举例
dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//这里的 mm、MM 可以随便用,只要位置对 但是推荐大小写和前面两种保持一致
localDateTime = LocalDateTime.parse("2022-06-13 18:06:39", dateTimeFormatter);// string 转 localDateTime
localDateTimeFormat = localDateTime.format(dateTimeFormatter);
System.out.println("localDateTimeFormat:" + localDateTimeFormat); //value : 2022-06-13 18:06:39
获取对应的时间日期以及当前天数
// 获取
LocalDate toLocalDate = localDateTime.toLocalDate();// 获取 LocalDate
System.out.println(toLocalDate); //value : 2022-06-13
LocalTime toLocalTime = localDateTime.toLocalTime();// 获取 LocalTime
System.out.println(toLocalTime); //value : 18:06:39
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
System.out.println("dayOfWeek:" + dayOfWeek);// 星期几 dayOfWeek:MONDAY
int dayOfMonth = localDateTime.getDayOfMonth();
System.out.println("dayOfMonth:" + dayOfMonth);// 当月第几天 dayOfMonth:13
int dayOfYear = localDateTime.getDayOfYear();
System.out.println("dayOfYear:" + dayOfYear);//当年第几天 dayOfYear:164
int hour = localDateTime.getHour();
System.out.println("hour:" + hour);//获取小时 hour:18
int minute = localDateTime.getMinute();
System.out.println("minute:" + minute);//获取分 minute:6
int second = localDateTime.getSecond();
System.out.println("second:" + second);//获取秒 second:39
int year = localDateTime.getYear();
System.out.println("year:" + year);//获取年 year:2022
int monthValue = localDateTime.getMonthValue();
System.out.println("monthValue:" + monthValue);//获取月 monthValue:6
int nano = localDateTime.getNano();
System.out.println("nano:" + nano);//获取纳秒 nano:0 由于数据是2022-06-13 18:06:39 所以为零 == 2022-06-13 18:06:39.0 下方是纳秒的转换
/*
dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.n");//这里的 mm、MM 可以随便用,只要位置对 但是推荐大小写和前面两种保持一致
localDateTime = LocalDateTime.parse("2022-06-13 18:06:39.123456789", dateTimeFormatter);// string 转 localDateTime
*/
Month month = localDateTime.getMonth();//获取月份
System.out.println("month:" + month);//month:JUNE
Chronology chronology = localDateTime.getChronology(); //获取年代
System.out.println("chronology:" + chronology);//chronology:ISO 说实话没文化,ISO 是什么? 有谁知道!
直接创建时间日期对象
//创建时间
LocalDateTime of1 = LocalDateTime.of(LocalDate.of(2021, 11, 15), LocalTime.of(20, 45, 35));
System.out.println(localDateTime.format(dateTimeFormatter));
LocalDateTime of2 = LocalDateTime.of(2022, 12, 21, 19, 35, 44);
System.out.println(localDateTime.format(dateTimeFormatter));
时间日期的比较
// 比较
int flag = of1.compareTo(of2);// of1 > of2 返回1; 相等返回0; of1 < of2 返回-1
System.out.println(flag);// value:-1
Boolean flag1 = of1.equals(of2);// 兄弟们想必equals不需要我多说了吧。
System.out.println(flag1);// value:false
Boolean flag2 = of1.isEqual(of2);
System.out.println(flag2);// value:false
Boolean flag3 = of1.isAfter(of2); //of1 是否在 of2 之前
System.out.println(flag3);// value:false
Boolean flag4 = of1.isBefore(of2);//of1 是否在 of2 之后
System.out.println(flag4);// value:true
一些简单的时间加减运算
// 修改
// 这里太简单了~~~~~~ 单纯的增加减少
// 我是从别的地方粘过来的~~~ 太简单了兄弟们勿怪!
LocalDate yyyyMMdd = LocalDate.now();
LocalDate addOneDay = yyyyMMdd.plusDays(1L); //添加一日
LocalDate addOneMonths = yyyyMMdd.plusMonths(1L);//添加一月
LocalDate addOneYears = yyyyMMdd.plusYears(1L);//添加一年
LocalDate addOneWeeks = yyyyMMdd.plusWeeks(1L);//添加一周
LocalDate delOneDay = yyyyMMdd.minusDays(1L); //减去一日
LocalDate delOneMonths = yyyyMMdd.minusMonths(1L);//减去一月
LocalDate delOneYears = yyyyMMdd.minusYears(1L);//减去一年
LocalDate delOneWeeks = yyyyMMdd.minusWeeks(1L);//减去一周
System.out.println("LocalDate yyyyMMdd 当前时间: " + yyyyMMdd);
System.out.println("*********LocalDate yyyyMMdd 添加 操作*********");
System.out.println("LocalDate yyyyMMdd 添加一日: " + addOneDay);
System.out.println("LocalDate yyyyMMdd 添加一月: " + addOneMonths);
System.out.println("LocalDate yyyyMMdd 添加一年: " + addOneYears);
System.out.println("LocalDate yyyyMMdd 添加一周: " + addOneWeeks);
System.out.println("*********LocalDate yyyyMMdd 减 操作*********");
System.out.println("LocalDate yyyyMMdd 减去一日: " + delOneDay);
System.out.println("LocalDate yyyyMMdd 减去一月: " + delOneMonths);
System.out.println("LocalDate yyyyMMdd 减去一年: " + delOneYears);
System.out.println("LocalDate yyyyMMdd 减去一周: " + delOneWeeks);
System.out.println("####################################################################");
LocalTime HHmmssSSS = LocalTime.now();
LocalTime addOneHours = HHmmssSSS.plusHours(1L); //添加1小时
LocalTime addOneMinutes = HHmmssSSS.plusMinutes(1L);//添加1分钟
LocalTime addOneSeconds = HHmmssSSS.plusSeconds(1L);//添加1秒
LocalTime addOneNanos = HHmmssSSS.plusNanos(1L);//添加1纳秒
LocalTime delOneHours = HHmmssSSS.minusHours(1L); //减去1小时
LocalTime delOneMinutes = HHmmssSSS.minusMinutes(1L);//减去1分钟
LocalTime delOneSeconds = HHmmssSSS.minusSeconds(1L);//减去1秒
LocalTime delOneNanos = HHmmssSSS.minusNanos(1L);//减去1纳秒
System.out.println("LocalTime HHmmssSSS 当前时间: " + HHmmssSSS);
System.out.println("*********LocalTime HHmmssSSS 添加 操作*********");
System.out.println("LocalTime HHmmssSSS 添加1小时: " + addOneHours);
System.out.println("LocalTime HHmmssSSS 添加1分钟: " + addOneMinutes);
System.out.println("LocalTime HHmmssSSS 添加1秒: " + addOneSeconds);
System.out.println("LocalTime HHmmssSSS 添加1纳秒: " + addOneNanos);
System.out.println("*********LocalTime HHmmssSSS 减 操作*********");
System.out.println("LocalTime HHmmssSSS 减去1小时: " + delOneHours);
System.out.println("LocalTime HHmmssSSS 减去1分钟: " + delOneMinutes);
System.out.println("LocalTime HHmmssSSS 减去1秒: " + delOneSeconds);
System.out.println("LocalTime HHmmssSSS 减去1纳秒: " + delOneNanos);
System.out.println("####################################################################");
LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
LocalDateTime localDateTimeAddOneDay = yyyyMMddHHmmssSSS.plusDays(1L); //添加一日
LocalDateTime localDateTimeAddOneMonths = yyyyMMddHHmmssSSS.plusMonths(1L);//添加一月
LocalDateTime localDateTimeAddOneYears = yyyyMMddHHmmssSSS.plusYears(1L);//添加一年
LocalDateTime localDateTimeAddOneWeeks = yyyyMMddHHmmssSSS.plusWeeks(1L);//添加一周
LocalDateTime localDateTimeAddOneHours = yyyyMMddHHmmssSSS.plusHours(1L); //添加1小时
LocalDateTime localDateTimeAddOneMinutes = yyyyMMddHHmmssSSS.plusMinutes(1L);//添加1分钟
LocalDateTime localDateTimeAddOneSeconds = yyyyMMddHHmmssSSS.plusSeconds(1L);//添加1秒
LocalDateTime localDateTimeAddOneNanos = yyyyMMddHHmmssSSS.plusNanos(1L);//添加1纳秒
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 当前时间: " + yyyyMMddHHmmssSSS);
System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********");
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一日: " + localDateTimeAddOneDay);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一月: " + localDateTimeAddOneMonths);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一年: " + localDateTimeAddOneYears);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一周: " + localDateTimeAddOneWeeks);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1小时: " + localDateTimeAddOneHours);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1分钟: " + localDateTimeAddOneMinutes);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1秒: " + localDateTimeAddOneSeconds);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1纳秒: " + localDateTimeAddOneNanos);
LocalDateTime localDateTimeDelOneDay = yyyyMMddHHmmssSSS.minusDays(1L); //减去一日
LocalDateTime localDateTimeDelOneMonths = yyyyMMddHHmmssSSS.minusMonths(1L);//减去一月
LocalDateTime localDateTimeDelOneYears = yyyyMMddHHmmssSSS.minusYears(1L);//减去一年
LocalDateTime localDateTimeDelOneWeeks = yyyyMMddHHmmssSSS.minusWeeks(1L);//减去一周
LocalDateTime localDateTimeDelOneHours = yyyyMMddHHmmssSSS.minusHours(1L); //减去1小时
LocalDateTime localDateTimeDelOneMinutes = yyyyMMddHHmmssSSS.minusMinutes(1L);//减去1分钟
LocalDateTime localDateTimeDelOneSeconds = yyyyMMddHHmmssSSS.minusSeconds(1L);//减去1秒
LocalDateTime localDateTimeDelOneNanos = yyyyMMddHHmmssSSS.minusNanos(1L);//减去1纳秒
System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 减 操作*********");
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一日: " + localDateTimeDelOneDay);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一月: " + localDateTimeDelOneMonths);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一年: " + localDateTimeDelOneYears);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一周: " + localDateTimeDelOneWeeks);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1小时: " + localDateTimeDelOneHours);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1分钟: " + localDateTimeDelOneMinutes);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1秒: " + localDateTimeDelOneSeconds);
System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1纳秒: " + localDateTimeDelOneNanos);
// 指定到对应日期
LocalDate withDayOfMonth = yyyyMMdd.withDayOfMonth(20);
System.out.println("LocalDate 直接指定到当月第几号: " + withDayOfMonth);
LocalDate withDayOfYear = yyyyMMdd.withDayOfYear(20);
System.out.println("LocalDate 直接指定到当年第几天: " + withDayOfYear);
LocalDate withYear = yyyyMMdd.withYear(2000);
System.out.println("LocalDate 当前时间直接指定年份: " + withYear);
LocalDate withMonth = yyyyMMdd.withMonth(6);
System.out.println("LocalDate 当前时间直接指定月份: " + withMonth);
其他相关:
// 其他
// 时间戳
System.currentTimeMillis();
//
// localDateTime 总是代表本地时区如果需要时区则需要使用
ZonedDateTime zdt01 = ZonedDateTime.now(); // 默认时区
ZonedDateTime zdt02 = ZonedDateTime.now(ZoneId.of("America/New_York")); // 用指定时区获取当前时间
System.out.println(zdt01);// value:2023-06-14T18:22:05.245+08:00[Asia/Shanghai]
System.out.println(zdt02);// value:2023-06-14T06:22:05.245-04:00[America/New_York]
// 这两个方法目前没搞懂,后续如果研究 ZonedDateTime 和 OffsetDateTime 我会继续补充目前先放着吧~~
//LocalDateTime.now().atZone()
//LocalDateTime.now().atOffset();
补充: 本来有方法一直用不明白后来,休息了一圈文章发完我就突然灵光乍现哈哈哈!主要是之前太蠢了!
我用当前时间不同时区放进去,最后转换成时间打印不同时区都是一个值,我一下就疑惑了。后面才反应过来我传进去的时间都是无时区的 LocalDateTime 当前时间!!! 时间是个固定的值! 可不就是一样的嘛!
ZonedDateTime zonedDateTime = LocalDateTime.now().atZone(ZoneId.of("America/New_York"));
System.out.println(zonedDateTime);//2023-06-15T10:53:01.460-04:00[America/New_York]
System.out.println(zonedDateTime.format(dateTimeFormatter));//2023-06-15 10:53:01
ZonedDateTime zonedDateTime1 = LocalDateTime.now().atZone(ZoneId.of("Asia/Shanghai"));
System.out.println(zonedDateTime1);//2023-06-15T10:53:01.460+08:00[Asia/Shanghai]
System.out.println(zonedDateTime1.format(dateTimeFormatter));//2023-06-15 10:53:01
// 虽然打印出来的时间都是相同的但是 isEqual 确实false 就是因为 zonedDateTime 带有时区
System.out.println(zonedDateTime.isEqual(zonedDateTime1));//false