Jdk1.8新特性 - 日期和时间(方便快捷)

package com.ityj.jdk8Date;

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

public class LocalDateTimeTest {
public static void main(String[] args) {

    System.out.println("******************************11111********************************");
    // 1、获取当前时间 LocalDateTime、LocalDate、LocalTime三种格式
    LocalDateTime now = LocalDateTime.now();
    LocalDate localDate = LocalDate.now();
    LocalTime localTime = LocalTime.now();
    // 其中LocalDate、LocalTime也可以通过LocalDateTime获取
    LocalDate localDate1 = now.toLocalDate();
    LocalTime localTime1 = now.toLocalTime();             

    // 当前的时间戳获取
    System.out.println("System.currentTimeMillis() = "+System.currentTimeMillis());
    System.out.println("Instant.now().toEpochMilli()毫秒值 = "+ Instant.now().toEpochMilli());
    System.out.println("Instant.now().toEpochMilli()秒为单位 = "+Instant.now().getEpochSecond());
    // 注意默认获取出来的是当前的美国时间和我们相差八个小时
    System.out.println("Instant.now().toString()默认伦敦时间 = "+Instant.now().toString());
    System.out.println("Instant.now().toString()偏移8小时北京时间 = "+Instant.now().atOffset(ZoneOffset.ofHours(8)));
    System.out.println("Instant.now().toString()偏移-4小时美国时间 = "+Instant.now().atOffset(ZoneOffset.ofHours(-4)));

    // Duration.between(start, end)获取时间戳间隔
    //Duration 获取两个Instant时间戳的间隔
    Instant start = Instant.now();
    long sum = 0L;
    for (int i = 0; i < 1000000; i++) {
        sum += i;
    }
    Instant end = Instant.now();

    Duration between = Duration.between(start, end);
    System.out.println("Duration.between(start, end) = "+ between.toMillis());

    //Period:  Period.between(begin, enddd)
    //用于计算两个“日期”间隔的类
    LocalDate begin = LocalDate.of(1995, 5, 5);
    LocalDate enddd = LocalDate.now();
    //##Period:
    //用于计算两个“日期”间隔的类
    Period period = Period.between(begin, enddd);
    int years = period.getYears();
    int months = period.getMonths();
    int days = period.getDays();

    // 获取相差的天数间隔
    long daysBetween = ChronoUnit.DAYS.between(enddd, enddd);

    System.out.println("******************************22222********************************");
    // 2、自定义指定时间
    LocalDateTime of = LocalDateTime.of(2010, 10, 10, 17, 20, 30, 100);
    LocalDate of1 = LocalDate.of(2019, 10, 10);
    LocalTime of2 = LocalTime.of(18, 20, 30);

    //年月日,时分秒 加上对应的时间量
    //注意添加完相应的时间量后,返回的是一个新对象
    LocalDateTime localDateTime = now.plusYears(1);
    LocalDateTime localDateTime1 = now.plusMonths(1);
    LocalDateTime localDateTime2 = now.plusDays(1);
    LocalDateTime localDateTime3 = now.plusHours(1);
    LocalDateTime localDateTime4 = now.plusMinutes(1);
    LocalDateTime localDateTime5 = now.plusSeconds(1);
    // 减去两年minusXxx
    LocalDateTime localDateTime6 = now.minusDays(2);


    System.out.println("******************************33333*******************************");
    // 3、日期格式与字符串转换,格式化日期日期字符串的方法 format()
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String dateStr = "1997-11-09 12:12:12";
    // str  ->    LocalDateTime
    LocalDateTime date = LocalDateTime.parse(dateStr,dtf);        //1997-11-09T12:12:12
    // LocalDateTime  -> str
    String format = dtf.format(LocalDateTime.now());             //2020-09-13 10:48:08

    // 3、获取年月日时分秒  -以及周几
    int year = now.getYear();
    int monthValue = now.getMonthValue();
    int dayOfMonth = now.getDayOfMonth();
    int hour = now.getHour();
    int minute = now.getMinute();
    int second = now.getSecond();
    int dayOfWeek = now.getDayOfWeek().getValue();


    System.out.println("******************************44444********************************");
    // 4、日期的比较
    LocalDate nowLocalDate = LocalDate.now();
    LocalDate hisDate = LocalDate.of(2010, 2, 19);
    boolean before = hisDate.isBefore(nowLocalDate);//判断一个日期是否在指定日期之前
    boolean after = hisDate.isAfter(nowLocalDate);//判断一个日期是否在指定日期之后
    boolean equal = hisDate.equals(hisDate);        //等值判断
    boolean leapYear = nowLocalDate.isLeapYear();//判断是否是闰年注意是LocalDate类中的方法
    boolean leapYear1 = hisDate.isLeapYear();//判断是否是闰年注意是LocalDate类中的方法


    System.out.println("******************************55555********************************");
    // 5、指定年月日时分秒的方法 with系列的方法 注意都会返回一个新的LocalDateTime的对象
    //指完对应的日期后,返回的是一个新的日期对象
    LocalDate localDate2 = LocalDate.now().withYear(2021);
    //指定完对应的日期后,返回的是一个新的日期对象
    LocalDate localDate3 = LocalDate.now().withMonth(2);
    //TemporalAdjusters的一些预定义方法
    // dayOfWeekInMonth 创建一个新的日期,它的值为同一个月中每一周的第几天
    // firstDayOfMonth 创建一个新的日期,它的值为当月的第一天
    // firstDayOfNextMonth 创建一个新的日期,它的值为下月的第一天
    // firstDayOfNextYear 创建一个新的日期,它的值为明年的第一天
    // firstDayOfYear 创建一个新的日期,它的值为当年的第一天
    // firstInMonth 创建一个新的日期,它的值为同一个月中,第一个符合星期几要求的值
    // lastDayOfMonth 创建一个新的日期,它的值为当月的最后一天
    // lastDayOfNextMonth 创建一个新的日期,它的值为下月的最后一天
    // lastDayOfNextYear 创建一个新的日期,它的值为明年的最后一天
    // lastDayOfYear 创建一个新的日期,它的值为今年的最后一天
    // lastInMonth 创建一个新的日期,它的值为同一个月中,最后一个符合星期几要求的值
    // next/previous
    // 创建一个新的日期,并将其值设定为日期调整后或者调整前,第一个符合指定星 期几要求的日期
    // nextOrSame/previousOrSame创建一个新的日期,并将其值设定为日期调整后或者调整前,第一个符合指定星
    // 期几要求的日期,如果该日期已经符合要求,直接返回该对象
    LocalDateTime currentTime = LocalDateTime.now();                                       // 2020-09-13T11:04:26.156
    TemporalAdjuster temporalAdjuster = TemporalAdjusters.firstDayOfNextMonth();           // 2020-10-01T11:04:26.156
    System.out.println("当前日期为 : "+currentTime);
    System.out.println("TemporalAdjusters.firstDayOfNextMonth() = "+ currentTime.with(temporalAdjuster));

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值