Java 8日期API的简单使用

package DateAPI;


import org.junit.Test;

import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.Set;

public class DateTest {
    @Test
    @SuppressWarnings("all")
    public void test01() {
        //LocalDate返回的只有年月日
        LocalDate date = LocalDate.of(2022, 12, 20);
        System.out.println(date.getYear());//年份
        Month month = date.getMonth();//月份
        System.out.println(month);
        int day = date.getDayOfMonth();//一个月中的第几天
        System.out.println(day);
        DayOfWeek dayofweek = date.getDayOfWeek();//星期几
        System.out.println(dayofweek);
        boolean leapyear = date.isLeapYear();//判断是否是闰年
        System.out.println(leapyear);
        DateTimeFormatter daf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime time4 = LocalDateTime.of(1212, 12, 12, 12, 12, 12);
        System.out.println(time4.format(daf));
    }

    //时钟Clock;
    //Clock类提供了访问当前日期和时间的方法,Clock是时区敏感的,可以用来取代
    //System.currentTimeMillis() 来获取当前的微秒数。某一个特定的时间点也可以使用Instant类来表示,
    //Instant类也可以用来创建老的java.util.Date对象。
    @Test
    public void test02() {
        //获取当前时区
        Clock clock = Clock.systemDefaultZone();
        System.out.println(clock);
        //返回毫秒数
        long millis = System.currentTimeMillis();
        System.out.println(millis);
        //返回毫秒数
        long mil = clock.millis();
        System.out.println(mil);
        //Instant创建Date对象
        Instant istant = clock.instant();
        Date from = Date.from(istant);
        System.out.printf("%tF,%<tT", from);
    }

    //Timezones时区
    @Test
    public void test03() {
        //获取所有时区
        Set<String> zoneids = ZoneId.getAvailableZoneIds();
        System.out.println(zoneids);
        ZoneId of = ZoneId.of("Asia/Shanghai");
        //获取时区
        System.out.println(ZoneOffset.systemDefault());
        System.out.println(of);
        System.out.println(of.getRules());
    }

    //@LocalTime本地时间
    @Test
    public void test4() {
        //获取指定时区的当前时间
        ZoneId zoneid = ZoneId.of("Asia/Aden");//亚丁湾
        LocalTime localtime = LocalTime.now(zoneid);
        System.out.println(localtime);
        //获取当前时间
        LocalTime time = LocalTime.now();
        System.out.println(time);
        //获取指定时间及时,分,秒
        LocalTime time2 = LocalTime.of(12, 59, 59);
        int hour = time2.getHour();
        int minute = time2.getMinute();
        int second = time2.getSecond();
        System.out.printf("%s小时%s分%s秒%n", hour, minute, second);
        //获取两个时间之间的时间差
        LocalTime start = LocalTime.of(12, 59, 59);
        LocalTime end = LocalTime.of(6, 59, 50);
        //两个事件之间相差多少分
        long betweentime = ChronoUnit.MINUTES.between(start, end);
        //日期格式化
        LocalTime time3 = LocalTime.of(12, 24, 12);
        DateTimeFormatter df1 = DateTimeFormatter.ofPattern("HH时mm分ss秒");
        System.out.println(time3.format(df1));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    }

    //LocalDateTime
    @Test
    public void test5() {
        LocalDateTime ldt = LocalDateTime.of(2012, 12, 12, 12, 21, 12);
        //可以与LocalDate进行同样的操作
        //获取当前是该天的多少分
        long minuteofday = ldt.getLong(ChronoField.MINUTE_OF_DAY);
        System.out.println(minuteofday);
        //获取秒数
        long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
        System.out.println(second);
        //获取毫秒数
        //toEpochMilli()将时间转换成毫秒数
        long millsecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
        //LocalDateTime转化成Date
        //转换步骤
        //1,将LocalDateTime获得的时间转换成毫秒数
        //2,创建一个新的Date对象
        Date d1 = new Date(millsecond);
        System.out.println(d1);
        System.out.println(d1.getTime());
        System.out.println(System.currentTimeMillis());
        //将Date转换成LocalDateTime
        Date d2 = new Date();
        LocalDateTime db1 = d2.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
        System.out.println("db1" + db1);
        //将LocalDateTime转化成String
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String datetime = LocalDateTime.now(ZoneId.of("+8")).format(dtf);
        System.out.println(datetime);
        //将字符串转换成LocalDateTime;
        String datetime2 = "2022-02-16 11:11:58";
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime datetime3 = LocalDateTime.parse(datetime2, dtf2);
        System.out.println(datetime3);
    }

    //Instant
    @Test
    public void test6() {
        Instant i = Instant.now();
        System.out.println(i);
        //获取秒
        System.out.println(i.getEpochSecond());
        //毫秒
        System.out.println(System.currentTimeMillis());
        //Date转换成Instant
        System.out.printf("%tF %<tT %n", i.getEpochSecond() * 1000);
        //Instant转换成Date;
        Date i2=Date.from(i);
        System.out.printf("%tF %<tT %n",i2);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值