LocalDateTime日期时间的相关操作与处理

当我们需要日期时间的格式时,LocalDateTime是最常用的类。这个类本身就提供了各种日期时间处理的API,本文主要记录LocalDateTime的日期时间的相关操作的api,以便后续查看:


提示:以下是本篇文章正文内容,下面案例可供参考

1、 LocalDateTime获取当前日期时间和特定日期时间对象
		//1.1 返回系统时钟和默认时区的当前日期时间,不为空
        // public static LocalDateTime now();
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);//2021-12-20T10:02:30.289

        //1.2  static LocalDateTime now(Clock clock):从指定时钟获取当前日期时间。
        LocalDateTime utcDateTime = LocalDateTime.now(Clock.systemUTC());
        System.out.println(utcDateTime);//2021-12-20T02:00:34.845

        //1.3 static LocalDateTime now(ZoneId zone):从指定时区中的系统时钟中获取当前日期时间
        // GMT是前世界标准时,UTC是现世界标准时。UTC 比 GMT更精准,以原子时计时,适应现代社会的精确计时。
        // 但在不需要精确到秒的情况下,二者可以视为等同
        LocalDateTime utc = LocalDateTime.now(ZoneId.of("UTC"));
        LocalDateTime gmt = LocalDateTime.now(ZoneId.of("GMT"));
        System.out.println(utc);//2021-12-20T02:00:34.845
        System.out.println(gmt);//2021-12-20T02:00:34.845

        //1.4 获取东八区的时间
        LocalDateTime beijing = LocalDateTime.now(ZoneId.of("GMT+8"));
        System.out.println(beijing);//2021-12-20T10:02:30.289

        //1.4 获取指定日期时间-of,分别用LocalDate和DateTime解析生成LocalDateTime
        // static LocalDateTime of(LocalDate date, LocalTime time)
        System.out.println(LocalDateTime.of(LocalDate.of(2012,12,2),LocalTime.of(12,45)));//2012-12-12T12:45

        //static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute); 到分
        System.out.println(LocalDateTime.of(2022, 12, 6, 12, 36)); //2022-12-06T12:36

        //static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second) 到秒
        System.out.println(LocalDateTime.of(2022, 12, 6, 12, 36,5));//2022-12-06T12:36:05

		//1.5 以1970年为基准获取往后多少秒的LocalDateTime时间
		//static LocalDateTime ofEpochSecond(long epochSecond, int nanoOfSecond, ZoneOffset offset) 从1970开始往后多少秒的时间
        LocalDateTime dateFromBase = LocalDateTime.ofEpochSecond(56, 0, ZoneOffset.UTC);// |\longremark{从1970-1-1开始计算的日期时间对象}|
        System.out.println("time from 01/01/1970 = " + dateFromBase); //1970-01-01T00:00:56

-------------------------------------------------------------------------------------

2、 localDateTime中获取时间的年,月,周,日
 		LocalDateTime nowDateTime = LocalDateTime.of(2022, 12, 6, 12, 36,25);
        // 2.1 int getYear():获取年份字段。
        System.out.println(nowDateTime.getYear()); //2022

        // 2.2 Month getMonth()/ int getMonthValue():获取时间的月份。
        System.out.println(nowDateTime.getMonth()); // DECEMBER
        System.out.println(nowDateTime.getMonthValue()); //12

        // 2.3 int getDayOfMonth():获取日期在当月中的天数。
        System.out.println(nowDateTime.getDayOfMonth()); //6

        // 2.4 DayOfWeek getDayOfWeek():获取日期属于当前周的第几天
        System.out.println(nowDateTime.getDayOfWeek()); //TUESDAY
        System.out.println(nowDateTime.getDayOfWeek().getValue()); //2

        // 2.5  int getDayOfYear():获取日期时间在当前年的天数。
        System.out.println(nowDateTime.getDayOfYear()); //340
3、 localDateTime中获取时间的时,分,秒
		// 3.1 int getHour():获取当前时间的小时数。
        System.out.println(nowDateTime.getHour()); //12
        // 3.2 int getMinute():获取当前时间的分钟。
        System.out.println(nowDateTime.getMinute()); //36
        // 3.3  int getSecond():获取当前时间秒数。
        System.out.println(nowDateTime.getSecond()); //25
4.1 LocalDateTime获取之后的日期时间-时间日期的添加
		LocalDateTime tempTime = LocalDateTime.of(2021, 7, 6, 11, 36,25);
        System.out.println(tempTime); //2021-07-06T11:36:25
        System.out.println("x = 1年后的日期时间"+tempTime.plusYears(1)); //x = 1年后的日期时间2022-07-06T11:36:25
        System.out.println("x = 1月后的日期时间"+tempTime.plusMonths(1)); //x = 1月后的日期时间2021-08-06T11:36:25
        System.out.println("x = 1周后的日期时间"+tempTime.plusWeeks(1)); //x = 1周后的日期时间2021-07-13T11:36:25
        System.out.println("x = 1天后的日期时间"+tempTime.plusDays(1)); //x = 1天后的日期时间2021-07-07T11:36:25
        System.out.println("x = 1小时后的日期时间"+tempTime.plusHours(1)); //x = 1小时后的日期时间2021-07-06T12:36:25
        System.out.println("x = 1分钟后的日期时间"+tempTime.plusMinutes(1)); //x = 1分钟后的日期时间2021-07-06T11:37:25
4.2 LocalDateTime获取之前的日期时间-时间日期的减去
		System.out.println("x = 1年前的日期时间"+tempTime.minusYears(1)); //x = 1年前的日期时间2020-07-06T11:36:25
        System.out.println("x = 1月前的日期时间"+tempTime.minusMonths(1)); //x = 1月前的日期时间2021-06-06T11:36:25
        System.out.println("x = 1周前的日期时间"+tempTime.minusWeeks(1)); //x = 1周前的日期时间2021-06-29T11:36:25
        System.out.println("x = 1天前的日期时间"+tempTime.minusDays(1)); //x = 1天前的日期时间2021-07-05T11:36:25
        System.out.println("x = 1小时前的日期时间"+tempTime.minusHours(1)); //x = 1小时前的日期时间2021-07-06T10:36:25
        System.out.println("x = 1分钟前的日期时间"+tempTime.minusMinutes(1)); //x = 1分钟前的日期时间2021-07-06T11:35:25
5、 LocalDateTime日期时间的比较:之前,之后,相等
		LocalDateTime tempTime1 = LocalDateTime.of(2021, 7, 6, 11, 36,25);
        LocalDateTime tempTime2 = LocalDateTime.of(2021, 8, 6, 12, 36,25);
        // 5.1 判断tempTime1是否在tempTime2之后,是否比其更晚
        boolean after = tempTime1.isAfter(tempTime2); // false
        // 5.2 判断tempTime1是否在tempTime2之前,是否比其更早
        boolean before = tempTime1.isBefore(tempTime2); //true
        // 5.3 判断tempTime1是否与tempTime2相等
        boolean equal = tempTime1.isEqual(tempTime2); // false
6、 LocalDateTime的转换,解析/格式化
6、1 LocalDateTime的转换为LocalDate
		// 6.1 LocalDateTime转为LocalDate
        LocalDateTime tempTime3 = LocalDateTime.of(2021, 7, 6, 11, 36,25);
        LocalDate localDate = tempTime3.toLocalDate();
        System.out.println(localDate); //2021-07-06
6、2 LocalDateTime的转换为LocalTime
		// 6.2 LocalDateTime转为LocalTime
        LocalTime localTime = tempTime3.toLocalTime();
        System.out.println(localTime); //11:36:25
6、3 字符串(可按指定格式)转换为LocalDateTime
		// 6.3 static LocalDateTime parse(CharSequence text) 将String字符串解析为LocalDateTime
        LocalDateTime parse = LocalDateTime.parse("2012-12-11T08:05:15");
        System.out.println(parse);//2012-12-11T08:05:15
        // 6.3.1 static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) 将String字符串解析为LocalDateTime
        LocalDateTime parse1 = LocalDateTime.parse("2012-12-11T08:05:15", DateTimeFormatter.ISO_LOCAL_DATE_TIME);
        System.out.println(parse1);
        //java中DateTimeFormatter类提供了很多日期格式。类似ISO_LOCAL_DATE等来做格式转化
6、4 将LocalDateTime转化为字符串,可指定DateTimeFormatter格式
		// 6.4 将LocalDateTime转化为字符串;同样提供了format()方法将时间转换为特定的格式(DateTimeFormatter已提供),也可以自定义格式
        String format = LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
        System.out.println("按ISO_LOCAL_DATE格式转后:" + format);  // 按ISO_LOCAL_DATE格式转后:2021-12-20
        String format2 = LocalDateTime.now().format(DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println("按BASIC_ISO_DATE格式转后:" + format2); // 按ISO_LOCAL_DATE格式转后:20211220
7. LocalDateTime日期时间的修改 -with
		LocalDateTime changeBeforeTime = LocalDateTime.of(2021, 7, 6, 11, 36,25);
        System.out.println("修改年份后的日期" + changeBeforeTime.withYear(2022)); // 修改年份后的日期2022-07-06T11:36:25
        System.out.println("修改月份后的日期" + changeBeforeTime.withMonth(11)); // 修改月份后的日期2021-11-06T11:36:25
        System.out.println("修改当月天数后的日期" + changeBeforeTime.withDayOfMonth(11)); // 修改当月天数后的日期2021-07-11T11:36:25
        System.out.println("修改当年天数后的日期" + changeBeforeTime.withDayOfYear(11)); // 修改当年天数后的日期2021-01-11T11:36:25
        System.out.println("修改小时后的日期" + changeBeforeTime.withHour(10)); // 修改小时后的日期2021-07-06T10:36:25
        System.out.println("修改分钟.秒后的日期" + changeBeforeTime.withMinute(10).withSecond(10)); //修改分钟.秒后的日期2021-07-06T11:10:10
8. LocalDateTime计算两个日期时间之间的差;相差的年,月,日,时,分,秒
8.1 ChronoUnit.单位.between的方式获取相差时间差
		LocalDateTime beginTime = LocalDateTime.of(2021, 7, 6, 11, 36,25);
        LocalDateTime endTime = LocalDateTime.of(2021, 9, 8, 01, 56,25);
        // 相差的年份数
        long betweenYears = ChronoUnit.YEARS.between(beginTime, endTime);
        System.out.println(betweenYears);  // 0
        // 相差的月份数
        long betweenMonths = ChronoUnit.MONTHS.between(beginTime, endTime);
        System.out.println(betweenMonths);  // 2
        // 相差的天数
        long betweenDays = ChronoUnit.DAYS.between(beginTime, endTime);
        System.out.println(betweenDays);  // 63
        // 相差的小时数
        long betweenHours = ChronoUnit.HOURS.between(beginTime, endTime);
        System.out.println(betweenHours); //1526
        // 相差的分钟数
        long betweenMinutes = ChronoUnit.MINUTES.between(beginTime, endTime);
        System.out.println(betweenMinutes);//91580
        // 相差的秒钟数
        long betweenMillis = ChronoUnit.MILLIS.between(beginTime, endTime);
        System.out.println(betweenMillis);//91580
8.1 Duration类的between方法获取时间差
  • 此方法获取不到相差的年月;但是获取到的Duration对象提供了天,时,分,秒,转换,只要获取到了就可以用其转成自己想要的单位;
        Duration between1 = Duration.between(beginTime, endTime);
        System.out.println(between1.toDays()); // 63 
        System.out.println(between1.toHours()); //1526 (63天*24小时+(24+1-11)不是整天的小时数)
        System.out.println(between1.toMinutes()); // 91580 (1526小时*60分钟+(56-25)分钟外相差的秒数)
        System.out.println(between1.toMillis()); // 5494800000
以上就是本次对于LocalDateTime相关操作api整理的内容,本文仅仅简单介绍了LocalDateTime的常用方法使用,LocalDateTime还有其他更多方法可以去发掘使用。
  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在中,可以使用LocalDateTime类来处理日期。以下是一些常见的使用方法: 1. 创建LocalDateTime对象: ```java LocalDateTime time = LocalDateTime.now(); // 获取当前日期时间 LocalDateTime specificTime = LocalDateTime.of(2021, 12, 6, 10, 11, 11); // 指定日期时间 ``` 2. 修改LocalDateTime对象的日期时间: ```java LocalDateTime modifiedTime = time.withYear(2020); // 修改年份 LocalDateTime modifiedTime = time.withMonth(11); // 修改月份 LocalDateTime modifiedTime = time.withHour(1); // 修改小时 LocalDateTime modifiedTime = time.withMinute(3); // 修改分钟 LocalDateTime modifiedTime = time.withSecond(1); // 修改秒数 LocalDateTime modifiedTime = time.withNano(1); // 修改纳秒数 LocalDateTime modifiedTime = time.with(ChronoField.DAY_OF_MONTH, 12); // 通用方法,修改日期 ``` 3. 计算两个LocalDateTime对象之间的时间差: ```java LocalDateTime startTime = LocalDateTime.of(2021, 12, 1, 10, 0, 0); LocalDateTime endTime = LocalDateTime.of(2021, 12, 6, 12, 0, 0); Duration duration = Duration.between(startTime, endTime); // 计算时间差 long minutes = duration.toMinutes(); // 获取时间差的分钟数 ``` 4. LocalDateTime与Date之间的转换: ```java // Date转LocalDateTime Date date = new Date(); LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); // LocalDateTime转Date LocalDateTime localDateTime = LocalDateTime.now(); Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); ``` 这些是使用LocalDateTime处理日期的一些常见操作。你可以根据具体需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值