LocalDateTime总结

Instant——它代表的是时间戳
LocalDate——不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。
LocalTime——它代表的是不含日期的时间
LocalDateTime——它包含了日期及时间,不过还是没有偏移信息或者说时区。
ZonedDateTime——这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的。

常用

  //------------------------------【获取秒数】-------------------------------------------------------
    Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
    //结果:1613785755

LocalDateTime总结

public static void main(String[] args) {
    //------------------------------【获取当前时间】---------------------------------------------------
    LocalDateTime nowTime = LocalDateTime.now();
    //结果:2021-02-20T09:45:44.527
    System.out.println(nowTime);
    //------------------------------【获取年月日】-----------------------------------------------------
    //【方法1】
    String a = nowTime.format(DateTimeFormatter.ISO_DATE);
    //结果:2021-02-20
    System.out.println(a);
    //【方法2】
    String b = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    //结果:2021-02-20
    System.out.println(b);
    //------------------------------【获取时分秒】-----------------------------------------------------
    String c = nowTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
    //结果:09:45:44
    System.out.println(c);
    //------------------------------【获取年月日时分秒毫秒】--------------------------------------------
    String d = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"));
    //结果:2021-02-20 09:45:44:527
    System.out.println(d);
    //------------------------------【获取秒数】-------------------------------------------------------
    Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
    //结果:1613785755
    System.out.println(second);
    //------------------------------【获取毫秒数】-----------------------------------------------------
    Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
    //结果:1613785815633
    System.out.println(milliSecond);
    //------------------------------【毫秒转LocalDateTime】--------------------------------------------
    Long longTime = 1613786449976L;
    LocalDateTime ldt = Instant.ofEpochMilli(longTime).atZone(ZoneId.systemDefault()).toLocalDateTime();
    //结果:2021-02-20T10:00:49.976
    System.out.println(ldt);
    //------------------------------【String转LocalDateTime】------------------------------------------
    String dateTimeStr = "2021-02-20 09:50:15";
    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);
    //结果:2021-02-20T09:50:15
    System.out.println(dateTime);
    //------------------------------【LocalDateTime转String】------------------------------------------
    //除了下面的方法之外,上面类型转换的都可以看成是LocalDateTime转String  ZoneOffset.of("+8")意思为:默认时区为东8区
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String dateTime2 = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);
    //结果:2021-02-20 09:55:52
    System.out.println(dateTime2);
    //------------------------------【LocalDateTime转Date】--------------------------------------------
    Date date = new Date();
    LocalDateTime localDateTime = date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
    //结果:2021-02-20T09:59:14.719
    System.out.println(localDateTime);
    //------------------------------【Date转LocalDateTime】--------------------------------------------
    LocalDateTime localDateTime1 = LocalDateTime.now();
    Date date1 = Date.from(localDateTime1.toInstant(ZoneOffset.of("+8")));
    //结果:Sat Feb 20 10:00:49 CST 2021
    System.out.println(date1);
    //------------------------------【LocalDateTime获取年】--------------------------------------------
    System.out.println("当前时间为:"+LocalDateTime.now()+" == "+"2021-02-20T10:23:45.041");
    int year = LocalDateTime.now().getYear();
    //结果:2021
    System.out.println(year);
    //------------------------------【LocalDateTime获取月】--------------------------------------------
    Month month = LocalDateTime.now().getMonth();
    //结果:FEBRUARY
    System.out.println(month);
    int monthValue = LocalDateTime.now().getMonthValue();
    //结果:2
    System.out.println(monthValue);
    //------------------------------【LocalDateTime获取日】--------------------------------------------
    int dayOfMonth = LocalDateTime.now().getDayOfMonth();
    //结果:20
    System.out.println(dayOfMonth);
    DayOfWeek dayOfWeek = LocalDateTime.now().getDayOfWeek();
    //结果:SATURDAY
    System.out.println(dayOfWeek);
    int dayOfYear = LocalDateTime.now().getDayOfYear();
    //结果:51
    System.out.println(dayOfYear);
    //------------------------------【LocalDateTime获取时】--------------------------------------------
    int hour = LocalDateTime.now().getHour();
    //结果:10
    System.out.println(hour);
    //------------------------------【LocalDateTime获取分】--------------------------------------------
    int minute = LocalDateTime.now().getMinute();
    //结果:23
    System.out.println(minute);
    //------------------------------【LocalDateTime获取秒】--------------------------------------------
    int second1 = LocalDateTime.now().getSecond();
    //结果:45
    System.out.println(second1);
    //------------------------------【LocalDateTime获取特定日期】---------------------------------------
    LocalDateTime of = LocalDateTime.of(2021, 2, 20, 10, 37, 20);
    //结果:2021-02-20T10:37:20
    System.out.println(of);
    //------------------------------【LocalDateTime时间对比】-------------------------------------------
    LocalDateTime of1 = LocalDateTime.of(2021, 2, 20, 10, 37, 20);
    LocalDateTime of2 = LocalDateTime.of(2021, 2, 20, 10, 37, 22);
    LocalDateTime of3 = LocalDateTime.of(2021, 2, 20, 10, 37, 22);
    //【方法1】
    //结果:false
    System.out.println(of1.equals(of2));
    //结果:true
    System.out.println(of2.equals(of3));
    //结果:-1 of1 < of2
    System.out.println(of1.compareTo(of2));
    //结果:0 of2 = of3
    System.out.println(of2.compareTo(of3));
    //结果:1 of3 > of1
    System.out.println(of3.compareTo(of1));
    //【方法2】
    //结果:false
    System.out.println(of1.isAfter(of2));
    //结果:true
    System.out.println(of1.isBefore(of2));
    //结果:true
    System.out.println(of2.isEqual(of3));
    //------------------------------【LocalDateTime获取一天前/后日期】-----------------------------------
    LocalDateTime localDateTime2 = LocalDateTime.now().plusDays(1);
    //结果:2021-02-21T10:48:26.911
    System.out.println(localDateTime2);
    LocalDateTime localDateTime3 = LocalDateTime.now().plusDays(-1);
    //结果:2021-02-19T10:48:26.911
    System.out.println(localDateTime3);
    //------------------------------【LocalDateTime获取一小时前/后日期】-----------------------------------
    LocalDateTime localDateTime4 = LocalDateTime.now().plusHours(1);
    //结果:2021-02-20T11:49:32.320
    System.out.println(localDateTime4);
    LocalDateTime localDateTime5 = LocalDateTime.now().plusHours(-1);
    //结果:2021-02-20T09:49:32.320
    System.out.println(localDateTime5);
    //------------------------------【LocalDateTime获取一年前/后日期】-------------------------------------
    LocalDateTime localDateTime6 = LocalDateTime.now().plusYears(1);
    //结果:2022-02-20T10:51:47.585
    System.out.println(localDateTime6);
    LocalDateTime localDateTime7 = LocalDateTime.now().plusYears(-1);
    //结果:2020-02-20T10:51:47.585
    System.out.println(localDateTime7);
    //------------------------------【LocalDateTime获取一分钟前/后日期】-----------------------------------
    LocalDateTime localDateTime8 = LocalDateTime.now().plusMinutes(1);
    //结果:2021-02-20T13:54:39.209
    System.out.println(localDateTime8);
    LocalDateTime localDateTime9 = LocalDateTime.now().plusMinutes(-1);
    //结果:2021-02-20T13:52:39.209
    System.out.println(localDateTime9);
    //------------------------------【LocalDateTime获取一月前/后日期】-------------------------------------
    LocalDateTime localDateTime10 = LocalDateTime.now().plusMonths(1);
    //结果:2021-03-20T13:55:12.718
    System.out.println(localDateTime10);
    LocalDateTime localDateTime11 = LocalDateTime.now().plusMonths(-1);
    //结果:2021-01-20T13:55:12.718
    System.out.println(localDateTime11);
    //------------------------------【LocalDateTime获取一秒前/后日期】-------------------------------------
    LocalDateTime localDateTime12 = LocalDateTime.now().plusSeconds(1);
    //结果:2021-02-20T13:57:51.966
    System.out.println(localDateTime12);
    LocalDateTime localDateTime13 = LocalDateTime.now().plusSeconds(-1);
    //结果:2021-02-20T13:57:49.966
    System.out.println(localDateTime13);
    //------------------------------【LocalDateTime获取一周前/后日期】-------------------------------------
    LocalDateTime localDateTime14 = LocalDateTime.now().plusWeeks(1);
    //结果:2021-02-27T13:59:46.615
    System.out.println(localDateTime14);
    LocalDateTime localDateTime15 = LocalDateTime.now().plusWeeks(-1);
    //结果:2021-02-13T13:59:46.615
    System.out.println(localDateTime15);
}

转自:LocalDateTime总结 - 夏夜凉凉 - 博客园

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值