Java1.8新特性 LocalDateTime的简易使用

由于近期在写分账功能,其中涉及了资格审核试用审核运营审核实时分账记录汇总等功能。
目前我们项目的时间类型采用的依旧是java.util.Date类型,但是,由于试用审核运营审核需要对时间进行定时加减(或多一天或少一天),以期能以正常的自然月来进行计算,所以这里写了很多很多的针对于时间加减的工具类。如,对指定java.util.Date日期进行加减、对指定java.lang.String日期进行加减。诸如此类,造成了工具代码比业务代码还要多,同时,也懒得写,真懒得写!
因此,我不得不转移到了Java1.8的新特性——java.time.LocalDateTime类上。再进行一些简单的了解和测试以后,我只想说,真好!
这里,将我写的部分测试代码贴上来以供大家参考,最重要的是作为自己的笔记记录下来,以备不时之需。
注意:这里仅仅就是一些简单测试案例,日后在系统深入学习后,我会将此笔记补齐

以下代码请放入test目录中执行:

package com.kevenpotter.test.date;

import org.junit.Test;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;

public class DateTest {

    @Test
    public void testLocalDate() {
        System.out.println("LocalDate类 仅获取年月日");
        // 获取当前年月日
        LocalDate localDate1 = LocalDate.now();
        System.out.println("获取当前年月日: " + localDate1);
        // 构造指定年月日
        LocalDate localDate2 = LocalDate.of(2008, 8, 8);
        System.out.println("获取指定年月日: " + localDate1);
        int year1 = localDate1.getYear();
        System.out.println("获取年份方式一: " + year1 + " 年");
        int year2 = localDate2.get(ChronoField.YEAR);
        System.out.println("获取年份方式二: " + year2 + " 年");
        Month month1 = localDate1.getMonth();
        System.out.println("获取月份方式一: " + month1 + " 月");
        int month2 = localDate2.get(ChronoField.MONTH_OF_YEAR);
        System.out.println("获取月份方式二: " + month2 + " 月");
        int day1 = localDate1.getDayOfMonth();
        System.out.println("获取日期方式一: " + day1 + " 号");
        int day2 = localDate2.get(ChronoField.DAY_OF_MONTH);
        System.out.println("获取日期方式二: " + day2 + " 号");
        DayOfWeek dayOfWeek1 = localDate1.getDayOfWeek();
        System.out.println("获取星期方式一: 星期: " + dayOfWeek1);
        int dayOfWeek2 = localDate2.get(ChronoField.DAY_OF_WEEK);
        System.out.println("获取星期方式二: 星期: " + dayOfWeek2);
    }

    @Test
    public void testLocalTime() {
        System.out.println("LocalTime类 仅获取时分秒");
        LocalTime localTime1 = LocalTime.now();
        System.out.println("获取当前时间: " + localTime1);
        LocalTime localTime2 = LocalTime.of(10, 20, 30);
        System.out.println("获取指定时间: " + localTime2);
        int hour1 = localTime1.getHour();
        System.out.println("获取小时方式一: " + hour1 + " 点");
        int hour2 = localTime2.get(ChronoField.HOUR_OF_DAY);
        System.out.println("获取小时方式一: " + hour2 + " 点");
        int minute1 = localTime1.getMinute();
        System.out.println("获取分钟方式一: " + minute1 + " 分");
        int minute2 = localTime2.get(ChronoField.MINUTE_OF_HOUR);
        System.out.println("获取分钟方式二: " + minute2 + " 分");
        int second1 = localTime1.getSecond();
        System.out.println("获取秒方式一: " + second1 + " 秒");
        int second2 = localTime2.get(ChronoField.SECOND_OF_MINUTE);
        System.out.println("获取秒方式二: " + second2 + " 秒");
    }

    @Test
    public void testLocalDateTime() {
        System.out.println("LocalDateTime类 可获取年月日时分秒");
        LocalDateTime localDateTime1 = LocalDateTime.now();
        System.out.println("获取当前时间方式一: " + localDateTime1);
        LocalDateTime localDateTime2 = LocalDateTime.of(2008, Month.AUGUST, 8, 8, 8, 8);
        System.out.println("获取指定时间方式一: " + localDateTime2);
        LocalDateTime localDateTime3 = LocalDateTime.of(LocalDate.now(), LocalTime.now());
        System.out.println("获取当前时间方式二: " + localDateTime3);
        LocalDateTime localDateTime4 = LocalDate.now().atTime(LocalTime.now());
        System.out.println("获取当前时间方式三: " + localDateTime4);
        LocalDateTime localDateTime5 = LocalTime.now().atDate(LocalDate.now());
        System.out.println("获取当前时间方式四: " + localDateTime5);
        LocalDate localDate = localDateTime1.toLocalDate();
        System.out.println("依据当前时间获取当前日期: " + localDate);
        LocalTime localTime = localDateTime1.toLocalTime();
        System.out.println("依据当前时间获取当前时间: " + localTime);
    }

    @Test
    public void testInstant() {
        System.out.println("Instant类 可获取秒数");
        Instant instant = Instant.now();
        long currentSecond = instant.getEpochSecond();
        System.out.println("获取当前秒数: " + currentSecond);
        long currentMillis = instant.toEpochMilli();
        System.out.println("获取当前毫秒数: " + currentMillis);
    }

    @Test
    public void testAddAndSubtract() {
        System.out.println("时间增加减少");
        LocalDateTime localDateTime = LocalDateTime.now();
        localDateTime = localDateTime.plusYears(1);
        System.out.println("增加一年方式一: " + localDateTime);
        localDateTime = localDateTime.plus(1, ChronoUnit.YEARS);
        System.out.println("增加一年方式二: " + localDateTime);
        localDateTime = localDateTime.minusMonths(1);
        System.out.println("减少一月方式一: " + localDateTime);
        localDateTime = localDateTime.minus(1, ChronoUnit.MONTHS);
        System.out.println("减少一月方式二: " + localDateTime);
        System.out.println("年份的修改");
        localDateTime = localDateTime.withYear(1993);
        System.out.println("修改年份方式一: " + localDateTime);
        localDateTime = localDateTime.with(ChronoField.YEAR, 1993);
        System.out.println("修改年份方式二: " + localDateTime);
    }

    @Test
    public void testSpecificDate() {
        System.out.println("查看特定的日期");
        LocalDate localDate1 = LocalDate.now();
        LocalDate localDate2 = localDate1.with(TemporalAdjusters.firstDayOfYear());
        System.out.println("本年中的第一天: " + localDate2);
    }

    @Test
    public void testFormat() {
        System.out.println("格式化时间");
        LocalDate localDate = LocalDate.of(1993, 3, 24);
        String s1 = localDate.format(DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println("格式化时间方式一: " + s1);
        String s2 = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
        System.out.println("格式化时间方式二: " + s2);
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        String s3 = localDate.format(dateTimeFormatter);
        System.out.println("自定义格式化时间: " + s3);
        System.out.println("时间解析");
        LocalDate localDate1 = LocalDate.parse("20201020", DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println("时间解析方式一: " + localDate1);
        LocalDate localDate2 = LocalDate.parse("2020-10-20", DateTimeFormatter.ISO_LOCAL_DATE);
        System.out.println("时间解析方式二: " + localDate2);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值