Java8-新时间与日期实现

目录

获取时间

 获取人读的时间及时间运算:

时间戳

 获取计算机读的时间及运算

 计算时间差

 时间矫正(修改时间)

格式化日期、时间及自定义时间格式


获取时间

 获取人读的时间及时间运算:

(具体使用的方法在代码里)

public class TestLocalDataTime {
    public static void main(String[] args) {
//        获取当前日期时间
        LocalDateTime idt = LocalDateTime.now();
        System.out.println(idt);

//   获取指定日期时间
LocalDateTime idt1 = LocalDateTime.of(2021,3,21,05,20,21);
        System.out.println(idt1);

//        日期运算
//        加年
        LocalDateTime idt2 =idt1.plusYears(1);
        System.out.println(idt2);
//        减月
        LocalDateTime idt3 = idt1.minusMonths(10);
        System.out.println(idt3);

//  获取单独年月日
        System.out.println(idt1.getYear());
        System.out.println(idt1.getMonth());
        System.out.println(idt.getDayOfWeek());

    }
}

时间戳

 获取计算机读的时间及运算

(带时区的时间)

具体使用在代码里体现

public class ShiJianChuo {
//    Instant:时间戳:(以Unix元年:1970年1月1日00:00:00到某个时间的毫秒值)
public static void main(String[] args) {
     Instant ins1 = Instant.now();//默认获取UTC时区,
    System.out.println(ins1);

    OffsetDateTime odt =ins1.atOffset(ZoneOffset.ofHours(8));//加8个时区
    System.out.println(odt);
//时间戳
    System.out.println(ins1.toEpochMilli());
    System.out.println(ins1.getEpochSecond());
//    从元年时间加时间
    Instant ins2 = Instant.ofEpochSecond(120);
    System.out.println(ins2);
}
}

 计算时间差

public class ShiJianJianGe {
    public static void main(String[] args) {
//      计算ins1 和ins2 机器时间间隔  
        Instant ins1 = Instant.now();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
             e.printStackTrace();
        }
        Instant ins2 = Instant.now();
        Duration dur = Duration.between(ins1,ins2);
//        获取毫秒间隔
        System.out.println(dur.toMillis());
//        获取秒间隔
        System.out.println(dur.getSeconds());

//获取人读时间间隔
        LocalTime it1 = LocalTime.now();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        LocalTime it2 = LocalTime.now();
        Duration dur1 = Duration.between(it1,it2);
        System.out.println(dur1.toMillis());
//获取现在时间与自定义时间相差多少
        LocalDate id1 =LocalDate.of(2021,3,21);
        LocalDate id2 = LocalDate.now();
        Period p = Period.between(id1,id2);

        System.out.println(p);
//        获取现在时间与自定义时间相差多少年
        System.out.println(p.getYears());


    }
}

 时间矫正(修改时间)

 

public class ShiJianJiaoZheng {
    public static void main(String[] args) {
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);
//        修改月份
        LocalDateTime ldt2 = ldt.withDayOfMonth(10);
        System.out.println(ldt2);
//获取下周一
        LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        System.out.println(ldt3);

//        自定义下一个工作日
    LocalDateTime ldt5 =    ldt.with((l)->{
            LocalDateTime ldt4 = (LocalDateTime) l;
//            获取周几
            DayOfWeek dow =ldt4.getDayOfWeek();
            if(dow.equals(DayOfWeek.FRIDAY)){
               return ldt4.plusDays(3);
            }else if(dow.equals(DayOfWeek.SUNDAY)){
                return ldt4.plusDays(2);
            }else{
                return ldt4.plusDays(1);
            }
        });
        System.out.println(ldt5);
    }
}

格式化日期、时间及自定义时间格式

 DateTimeFormatter格式化日期/时间
public class GeShiHua {
    public static void main(String[] args) {
//                 DateTimeFormatter格式化日期/时间
//        对日期格式化
         DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE;
         LocalDateTime idt = LocalDateTime.now();
         String  str = idt.format(dtf);
        System.out.println(str);

//        自定义格式
        DateTimeFormatter dtf2 =DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String str2 = dtf2.format(idt);
        System.out.println(str2);

//        转换回来
        LocalDateTime newDate = LocalDateTime.parse(str2,dtf2);
        System.out.println(newDate);

//        ZonedDate/ZonedTime/ZonedDateTime
//获取Europe/Nicosia时区的时间
      LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Europe/Nicosia"));
        System.out.println(ldt);
        //        获取时区

        Set<String> set =  ZoneId.getAvailableZoneIds();
        set.forEach(System.out::println);


    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值