package com.diyishuai.java8;

import java.time.*;
import java.time.temporal.TemporalAdjusters;

/**
 * Created by Bruce on 16/8/9.
 * SQL -> Java
 --------------------------
 date -> LocalDate
 time -> LocalTime
 timestamp -> LocalDateTime
 */
public class LocalDateAndTimeAndDateTime {

    public static void main(String[] args) {
//        localdate();
//        localtime();
//        localdatetime();
//        test1();
        System.out.println(System.currentTimeMillis());
    }

    public static void test1(){
        LocalDateTime localDateTime1 = LocalDateTime.parse("2016-09-06T06:00:00");
        LocalDateTime localDateTime2 = LocalDateTime.parse("2016-09-06T07:00:00");
//        System.out.println(localDateTime1.getLong(ChronoField.NANO_OF_DAY));
        long time1 = localDateTime1.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
        long time2 = localDateTime2.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();



    }


    public static void localdate(){
        LocalDate today = LocalDate.now();
        System.out.println(today);

        LocalDate someday = LocalDate.of(2016,8,9);

        LocalDate withstr = LocalDate.parse("2016-08-09");

        if (someday.equals(withstr))
            System.out.println(true);
        else
            System.out.println(false);

        // 取本月第1天:
        LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2016-08-09
        // 取本月第2天:
        LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2016-08-02
        // 取本月最后一天,再也不用计算是28,29,30还是31:
        LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2016-08-31
        // 取下一天:
        LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); // 变成了2016-09-01
        // 取2016年9月第一个周一,这个计算用Calendar要死掉很多脑细胞:
        LocalDate firstMondayOf2015 = LocalDate.parse("2016-09-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2016-09-05
    }

    public static void localtime() {
        //包含毫秒
        LocalTime now = LocalTime.now();
        System.out.println(now);

        //清除毫秒数
        LocalTime time = LocalTime.now().withNano(0);
        System.out.println(time);

        //构造时间
        LocalTime zero = LocalTime.of(0, 0, 0); // 00:00:00
        LocalTime mid = LocalTime.parse("12:00:00"); // 12:00:00
        System.out.println(zero);
        System.out.println(mid);

    }

    public static void localdatetime() {
        long start = System.currentTimeMillis();
//        LocalDateTime now = LocalDateTime.now();
//        System.out.println(now);
//        LocalDateTime hello = LocalDateTime.parse("2016-08-09T12:00:00:000",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:zzz"));
//        System.out.println(hello);
        int i = 5;
        System.out.println(System.currentTimeMillis()-start);
    }
}