package com.lovecoding.day16.ex01;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class Test01 {

    //（4）计算日期的间隔
    //- 获取当前系统日期
    //- 从键盘输入你的出生日期和时间，例如：1995-05-01 08:08 直接声明也可以
    //- 计算两个日期之间的毫秒值
    //- 并求该毫秒值对应的一个日期时间值
    @Test
    public void test04() throws ParseException {
        Date date1 = new Date();

        String s = "1995-05-01 08:08";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date parse = sdf.parse(s);

        System.out.println(date1.getTime() - parse.getTime());
        long l = date1.getTime() - parse.getTime();

        Date date = new Date(l);
        System.out.println(date);

        LocalDateTime now = LocalDateTime.now();

        Date from = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());
        System.out.println(from);


    }

    //- 获取本地的当前系统日期
    //- 从键盘输入你的出生日期，例如：1995-05-01 （不考虑格式） 直接声明也可以
    //- 计算两个日期的间隔
    @Test
    public void test03(){
        LocalDate localDate = LocalDate.now();
        LocalDate now = LocalDate.of(1995, 5, 1);
        //转换
        String s = "1995-05-01";
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //字符串转时间
        LocalDate parse = LocalDate.parse(s, df);

        Period between = Period.between(parse, localDate);

        System.out.println(between.getDays());
        System.out.println(between.getMonths());
        System.out.println(between.getYears());
    }

    //（2）计算两个时间的间隔
    //- 获取本地的当前系统时间
    //- 获取美国芝加哥的系统时间
    //- 计算两个时间的间隔
    @Test
    public void test02(){
        LocalTime localTime1 = LocalTime.now();
        LocalTime localTime2 = LocalTime.now(ZoneId.of("America/Chicago"));

        Duration between = Duration.between(localTime2, localTime1);

        long seconds = between.getSeconds();
        System.out.println(Math.abs(seconds/60/60));

    }

    @Test
    public void test01(){
        //- 使用自定义的格式输出，例如：“2022年01月23日 23时12分15秒  871毫秒  星期日 是这一年的23天”
        //- "yyyy年MM月dd日 HH时mm分ss秒  SSS毫秒  E 是这一年的D天
        LocalDateTime localDateTime = LocalDateTime.now();

        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒  SSS毫秒  E 是这一年的D天");

        String format = df.format(localDateTime);

        System.out.println(format);

    }
}
