1-时间轴上瞬间的Date

public static void main(String[] args) {
        long currentTimeMillis = System.currentTimeMillis();
        Date d1 = new Date(currentTimeMillis);
        Date d2 = new Date();
        
        System.out.println(d1.getTime());
        System.out.println(d2.getTime());
        System.out.println(d2.toString());
    }
// 输出
1564451685153
1564451685153
Tue Jul 30 09:54:45 CST 2019

2-格式化日期时间的DateFormat

public static void main(String[] args) {

        Date date = new Date();

        //getDateInstance
        System.out.println("---getDateInstance---");
        System.out.println(DateFormat.getDateInstance(DateFormat.LONG).format(date));
        System.out.println(DateFormat.getDateInstance(DateFormat.MEDIUM).format(date));
        System.out.println(DateFormat.getDateInstance(DateFormat.SHORT).format(date));

        //getTimeInstance
        System.out.println("---getTimeInstance---");
        System.out.println(DateFormat.getTimeInstance(DateFormat.LONG).format(date));
        System.out.println(DateFormat.getTimeInstance(DateFormat.MEDIUM).format(date));
        System.out.println(DateFormat.getTimeInstance(DateFormat.SHORT).format(date));

        //getDateTimeInstance
        System.out.println("---getDateTimeInstance---");
        System.out.println(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(date));
        System.out.println(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(date));
        System.out.println(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(date));


    }
    
// 输出
---getDateInstance---
July 30, 2019
Jul 30, 2019
7/30/19

---getTimeInstance---
10:31:58 AM CST
10:31:58 AM
10:31 AM

---getDateTimeInstance---
July 30, 2019 10:31:58 AM CST
7/30/19 10:31:58 AM
7/30/19 10:31 AM

public static void main(String[] args) {

        Date date = new Date();
        DateFormat dateFormat = new SimpleDateFormat("EE-MM-dd-yyyy");
        System.out.println(dateFormat.format(date));

    }
// 输出
Tue-07-30-2019    

3-处理时间日期的Calendar

public static void main(String[] args) {

        Calendar calendar = Calendar.getInstance();

        // 获得date对象
        Date date = calendar.getTime();
        System.out.println(date.getTime());

        // 获取年月日
        int year = calendar.get(Calendar.YEAR);
        // 注意这里的month 枚举常量是从0开始的 比如现在的时间是2019-7-30 而得到的month是6
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DATE);
        System.out.println(year + "-" + month + "-" + day);

        //设置年月日
        calendar.set(2000, 11, 11);

        //年份+1
        calendar.add(Calendar.YEAR, 1);
        //月份-2
        calendar.add(Calendar.MONTH, -2);
        //只对某个字段做加减 比如现在的日期是2017-02-28 加一后会变为2017-02-01
        calendar.roll(Calendar.DATE, 1);
        
    }

4-设定TimeZone

public static void main(String[] args) {

        TimeZone timeZone = TimeZone.getDefault();
        System.out.println(timeZone.getDisplayName());
        System.out.println("时区ID-" + timeZone.getID());
        System.out.println("夏令时数-" + timeZone.getDSTSavings());
        System.out.println("偏移毫秒数-" + timeZone.getRawOffset());

        //获可用的ID
        String[] ids = TimeZone.getAvailableIDs();
        for (String id : ids) {
            System.out.println(id);
        }

        //获得指定ID的时区 Asia/Shanghai
        TimeZone sh = TimeZone.getTimeZone("Asia/Shanghai");
    }
// 输出
中国标准时间
时区ID-Asia/Shanghai
夏令时数-0
偏移毫秒数-28800000  

5-新日期时间API

5.1 机器时间观点的API
		Date date = new Date();
        //Date转Instant
        Instant instant = date.toInstant();
        //Instant转Date
        Date date1 = Date.from(instant);

        Instant instant1 = instant.plusSeconds(1);
        Instant instant2 = instant.plusMillis(1);
        Instant instant3 = instant.plusNanos(1);
5.2 人类时间观点的API
		LocalDateTime.now();
        LocalDate.now();
        LocalTime.now();

        ZonedDateTime.now();
        OffsetDateTime.now();

        Year.now();
        YearMonth.now();
        Month.values();
        MonthDay.now();
5.3 对时间的运算
public static void main(String[] args) {

        //JDK8 流畅API
        System.out.println(LocalDate.of(1975, 5, 26)
                .plusDays(5)
                .plusMonths(6)
                .plusWeeks(3)
                .format(DateTimeFormatter.ofPattern("E MM/dd/yyyy")));

        //plus方法接受java.time.temporal.TemporalAmount实例 而Period/Duration实现了这个接口
        //Period是日期差 Duration是时间差
        System.out.println(LocalDate.of(1975, 5, 26)
                .plus(Period.ofDays(5))
                .plus(Period.ofMonths(6))
                .plus(Period.ofWeeks(3))
                .format(DateTimeFormatter.ofPattern("E MM/dd/yyyy")));


        //java.time.temporal.TemporalUnit ChronoUnit实现了该接口
        System.out.println(LocalDate.of(1975, 5, 26)
                .plus(5, ChronoUnit.DAYS)
                .plus(6, ChronoUnit.MONTHS)
                .plus(3, ChronoUnit.WEEKS)
                .format(DateTimeFormatter.ofPattern("E MM/dd/yyyy")));

        ChronoUnit.YEARS.between();
    }