image.png
    image.png
    image.png
    image.png

    image.png
    image.png

    image.png

    image.png

    image.png

    1. package com.atguigu.java;
    2. import org.junit.Test;
    3. import java.time.*;
    4. import java.time.format.DateTimeFormatter;
    5. import java.time.format.FormatStyle;
    6. import java.time.temporal.TemporalAccessor;
    7. import java.util.Date;
    8. /**
    9. * @author Dxkstart
    10. * @create 2021-05-12 19:52
    11. */
    12. public class JDK8_DateTimeTest {
    13. @Test
    14. public void testDate(){
    15. //偏移量的问题
    16. // Date date = new Date(2021,05,12);
    17. // System.out.println(date);//Sun Jun 12 00:00:00 CST 3921
    18. //年份不正确的原因是,有1900的偏移量,且月份是从0开始的
    19. Date date = new Date(2021-1900,5-1,12);
    20. System.out.println(date);//Wed May 12 00:00:00 CST 2021
    21. }
    22. /*
    23. LocalDate、 LocalTime、 LocalDateTime 的使用
    24. 说明:
    25. 1.LocalDateTime相较于其他两个来说,使用频率更高一些
    26. 2.类似于Calendar
    27. */
    28. @Test
    29. public void Test(){
    30. //new():获取当前的日期、时间、日期+时间
    31. LocalDate localeDate = LocalDate.now();
    32. LocalTime localTime = LocalTime.now();
    33. LocalDateTime localDateTime = LocalDateTime.now();
    34. System.out.println(localeDate);
    35. System.out.println(localTime);
    36. System.out.println(localDateTime);
    37. //of():设置指定的年、月、日、时、分、秒。没有偏移量
    38. LocalDateTime localDateTime1 = LocalDateTime.of(2021, 6, 7, 12, 00, 59);
    39. System.out.println(localDateTime1);
    40. //getXxx():获取相关的属性
    41. System.out.println(localDateTime.getDayOfMonth());
    42. System.out.println(localDateTime.getDayOfWeek());
    43. System.out.println(localDateTime.getDayOfYear());
    44. //体现不可变性
    45. //withXxx():设置相关的属性
    46. LocalDateTime localDateTime2 = localDateTime.withDayOfMonth(22);
    47. System.out.println(localDateTime);//12日
    48. System.out.println(localDateTime2);//22日
    49. //不变性,+加操作
    50. LocalDateTime localDateTime3 = localDateTime.plusMonths(5);
    51. System.out.println(localDateTime);//5月
    52. System.out.println(localDateTime3);//10月
    53. //减操作,—
    54. LocalDateTime localDateTime4 = localDateTime.minusMonths(3);
    55. System.out.println(localDateTime);//5月
    56. System.out.println(localDateTime4);//2月
    57. }
    58. /*
    59. Instant的使用
    60. */
    61. @Test
    62. public void test2(){
    63. //now():获取本初子午线对应的标准时间
    64. Instant instant = Instant.now();
    65. System.out.println(instant);//2021-05-12T12:49:24.778Z,这是伦敦时间,1时区
    66. //添加偏移量
    67. OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
    68. System.out.println(offsetDateTime);
    69. //toEpochMilli():获取自1970年1月1日0时0分0秒(UTC)开始的毫秒数 --->Date类的getTime()
    70. long toEpochMilli = instant.toEpochMilli();
    71. System.out.println(toEpochMilli);
    72. //toEpochMilli():通过给定的毫秒数,获取Instant实例 --->Date(long millis)
    73. Instant instant1 = Instant.ofEpochMilli(1520824202970L);
    74. System.out.println(instant1);
    75. }
    76. /*
    77. DateTimeFormatter:格式化或解析日期、时间
    78. 类似于SimpleDateFormat
    79. */
    80. @Test
    81. public void test3(){
    82. //方式一:预定义的标准格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
    83. DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
    84. //格式化:日期 -->字符串
    85. LocalDateTime localDateTime = LocalDateTime.now();
    86. String str1 = formatter.format(localDateTime);
    87. System.out.println(localDateTime);
    88. System.out.println(str1);//2021-05-12T21:31:17.246
    89. //解析:字符串 -->日期
    90. TemporalAccessor parse = formatter.parse("2021-05-12T21:31:17.246");
    91. System.out.println(parse);
    92. //方式二:
    93. // 本地化相关的格式。如:ofLocalizedDateTime(FormatStyle.LONG)
    94. // FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT :适用于LocalDateTime
    95. DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
    96. //格式化
    97. String str2 = formatter1.format(localDateTime);
    98. System.out.println(str2);//21-5-12 下午9:42
    99. //本地化相关的格式。如:ofLocalizedDate()
    100. // FormatStyle.FULL / FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT:
    101. //适用于:LocalDate
    102. DateTimeFormatter formatter2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
    103. String str3 = formatter2.format(LocalDate.now());
    104. System.out.println(str3);//2021年5月12日 星期三
    105. //重点:
    106. //方式三:自定义的格式。如:ofPattern("yyyy-MM-dd hh:mm:ss ")
    107. DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
    108. //格式化
    109. String str4 = formatter3.format(LocalDateTime.now());
    110. System.out.println(str4);//2021-05-12 10:00:27
    111. //解析
    112. TemporalAccessor parse1 = formatter3.parse("2021-05-12 10:00:27");
    113. System.out.println(parse1);
    114. }
    115. }

    image.png