• LocalDateTime获取时间类(当前时间)


    1. import java.time.LocalDate;
    2. import java.time.LocalDateTime;
    3. import java.time.LocalTime;
    4. import java.time.format.DateTimeFormatter;
    5. public class Test5 {
    6. public static void main(String[] args) {
    7. System.err.println("============LocalDate================");
    8. //创建日期对象
    9. //根据当前操作系统的的日期创建对象
    10. LocalDate date =LocalDate.now();
    11. System.out.println(date);
    12. System.out.println("============================");
    13. //最小日期
    14. date =LocalDate.MIN;
    15. System.out.println(date);
    16. System.out.println("============================");
    17. //最大日期
    18. date =LocalDate.MAX;
    19. System.out.println(date);
    20. System.out.println("============================");
    21. //将yyyy-MM-dd格式字符串解析为日期对象
    22. //月和日小于10的,前面需要带0
    23. date =LocalDate.parse("2008-12-20");
    24. System.out.println(date);
    25. System.out.println("============================");
    26. //自己指定格式,将字符串解析为日期对象
    27. date=LocalDate.parse("2012/12/12",DateTimeFormatter.ofPattern("yyyy/MM/dd"));
    28. System.out.println(date);
    29. System.out.println("============================");
    30. //自己指定年月日
    31. date=LocalDate.of(2008, 8, 8);
    32. System.out.println(date);
    33. System.out.println("============================");
    34. System.out.println("============================");
    35. //日期对象主要方法
    36. date=LocalDate.now();
    37. //增加指定年份后日期
    38. date =date.plusYears(10);
    39. System.out.println(date);
    40. System.out.println("============================");
    41. //增加指定月份后日期
    42. date =date.plusMonths(1000);
    43. System.out.println(date);
    44. System.out.println("============================");
    45. //增加指定天数后的日期
    46. date= date.plusDays(100000);
    47. System.out.println(date);
    48. System.out.println("============================");
    49. 增加指定星期后的日期
    50. date=date.plusWeeks(1000);
    51. System.out.println(date);
    52. System.out.println("============================");
    53. //增加指定天数后的日期
    54. //减少指定年份前的日期
    55. date=date.minusYears(10);
    56. System.out.println(date);
    57. System.out.println("============================");
    58. //获取年月日
    59. System.out.println("年:"+date.getYear());
    60. //使用1-12来表示1月份到12月份
    61. System.out.println("月:"+date.getMonthValue());
    62. System.out.println("日:"+date.getDayOfMonth());
    63. System.out.println("年中天数:"+date.getDayOfYear());
    64. //使用1-7来表示周一到周日
    65. System.out.println("星期:"+date.getDayOfWeek().getValue());
    66. System.err.println("============LocalTime================");
    67. //创建时间对象
    68. //根据当前操作系统的的时间创建对象
    69. LocalTime time =LocalTime.now();
    70. System.out.println(time);
    71. System.out.println("============================");
    72. //最小时间
    73. time =LocalTime.MIN;
    74. System.out.println(time);
    75. System.out.println("============================");
    76. //最大时间
    77. time =LocalTime.MAX;
    78. System.out.println(time);
    79. System.out.println("============================");
    80. //将HH:mm:ss格式字符串解析为时间对象
    81. //时分秒小于10的,前面需要带0
    82. time =LocalTime.parse("16:23:34");
    83. System.out.println(time);
    84. System.out.println("============================");
    85. //自己指定格式,将字符串解析为时间对象
    86. time=LocalTime.parse("12/12/12",DateTimeFormatter.ofPattern("HH/mm/ss"));
    87. System.out.println(time);
    88. System.out.println("============================");
    89. //自己指定时分秒
    90. time=LocalTime.of(17,10,9);
    91. System.out.println(time);
    92. System.out.println("============================");
    93. //主要方法
    94. time=LocalTime.now();
    95. //增加指定小时后时间
    96. time=time.plusHours(3);
    97. System.out.println(time);
    98. System.out.println("============================");
    99. //增加指定分钟后时间
    100. time=time.plusMinutes(3);
    101. System.out.println(time);
    102. System.out.println("============================");
    103. //增加指定秒后时间
    104. time=time.plusSeconds(3000);
    105. System.out.println(time);
    106. System.out.println("============================");
    107. //增加指定na秒后时间
    108. time=time.plusNanos(56787543212345789L);
    109. System.out.println(time);
    110. System.out.println("============================");
    111. //减少指定小时前的时间
    112. time =time.minusMinutes(2);
    113. System.out.println(time);
    114. //获取时间相关信息
    115. System.out.println("时:"+time.getHour());
    116. System.out.println("分:"+time.getMinute());
    117. System.out.println("秒:"+time.getSecond());
    118. System.out.println("na秒:"+time.getNano());
    119. System.err.println("============LocalDateTime================");
    120. //根据当前操作系统的的时间创建对象
    121. LocalDateTime datetime =LocalDateTime.now();
    122. System.out.println(datetime);
    123. System.out.println("============================");
    124. //最小时间
    125. datetime =LocalDateTime.MIN;
    126. System.out.println(datetime);
    127. System.out.println("============================");
    128. //最大时间
    129. datetime =LocalDateTime.MAX;
    130. System.out.println(datetime);
    131. System.out.println("============================");
    132. //4>将yyyy-MM-dd HH:mm:ss格式字符串解析为日期时间对象
    133. //时分秒小于10的,前面需要带上0
    134. datetime =LocalDateTime.parse("2008-12-20T16:23:34");
    135. System.out.println(datetime);
    136. System.out.println("============================");
    137. //5>自己指定格式,将字符串解析为日期时间对象
    138. datetime=LocalDateTime.parse("2012/12/12 12/12/12",
    139. DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss"));
    140. System.out.println(datetime);
    141. System.out.println("============================");
    142. //6>自己指定年月日时分秒
    143. datetime=LocalDateTime.of(2003,10,9,18, 19, 18);
    144. System.out.println(datetime);
    145. System.out.println("============================");
    146. //主要方法
    147. datetime=LocalDateTime.now();
    148. //增加指定小时后时间
    149. datetime=datetime.plusHours(3);
    150. System.out.println(datetime);
    151. System.out.println("============================");
    152. //增加指定分钟后时间
    153. datetime=datetime.plusMinutes(3);
    154. System.out.println(datetime);
    155. System.out.println("============================");
    156. //增加指定秒后时间
    157. datetime=datetime.plusSeconds(3000);
    158. System.out.println(datetime);
    159. System.out.println("============================");
    160. //增加指定na秒后时间
    161. datetime=datetime.plusNanos(56787543212345789L);
    162. System.out.println(datetime);
    163. System.out.println("============================");
    164. //减少指定小时前的时间
    165. datetime =datetime.minusMinutes(2);
    166. System.out.println(datetime);
    167. //获取时间相关信息
    168. System.out.println("时:"+datetime.getHour());
    169. System.out.println("分:"+datetime.getMinute());
    170. System.out.println("秒:"+datetime.getSecond());
    171. System.out.println("na秒:"+datetime.getNano());
    172. }
    173. }

    java8以前,或许:

    当你在做有关时间日期的操作时,你会想到用Date;
    当你在做日期、月份、天数相加减时,你会想到用Calendar;
    当你需要对时间日期进行格式化时,你会想到使用SimpleDateFormat或DateFormat下的其他子类;

    但是,你必须知道,以上有关的时间日期操作对象,都是可变的、线程不安全的,同时,如果作为一个经常写过类似代码的人来说,尽管有相关对象提供某些操作,但并不能很快、很简单的就能得到最终想要的结果,如:要计算两个时间点之间相差的年、月、日、周、时、分、秒等,这些计算尽管原有API也能够实现,但原有API除了线程不安全之外,另外一个不足之处就是代码繁琐,性能低!

    **为何我们总提多线程下,线程不安全?**对于初学者来说,可能觉得能够简单实现出功能就已经足够,但是真正的开发项目是不可能仅仅考虑功能的实现的,还要考虑项目的安全性、稳定性、高性能、高可用性等等!因此,作为java开发者,多线程的知识是必不可少的。而也正因为多线程,才会出现一大堆问题(简称线程安全性问题),作为开发者,就应该写出不仅能实现功能的代码,还要是线程安全的代码。那么,学习并熟悉掌握新的线程安全的API就显得非常重要了!

    没错,java8出的新的时间日期API都是线程安全的,并且性能更好,代码更简洁!
    新时间日期API常用、重要对象介绍

    ZoneId: 时区ID,用来确定Instant和LocalDateTime互相转换的规则
    Instant: 用来表示时间线上的一个点(瞬时)
    LocalDate: 表示没有时区的日期, LocalDate是不可变并且线程安全的
    LocalTime: 表示没有时区的时间, LocalTime是不可变并且线程安全的
    LocalDateTime: 表示没有时区的日期时间, LocalDateTime是不可变并且线程安全的
    Clock: 用于访问当前时刻、日期、时间,用到时区
    Duration: 用秒和纳秒表示时间的数量(长短),用于计算两个日期的“时间”间隔
    Period: 用于计算两个“日期”间隔
    其中,LocalDate、LocalTime、LocalDateTime是新API里的基础对象,绝大多数操作都是围绕这几个对象来进行的,有必要搞清楚:
    LocalDate : 只含年月日的日期对象
    LocalTime :只含时分秒的时间对象
    LocalDateTime : 同时含有年月日时分秒的日期对象
     

  • 相关阅读:
    Kafka3.x核心知识速查手册-一、快速上手篇
    决战双十一,Mini LED才是最终答案?
    【redis入门系列】redis搭建主从服务器
    docker-compose部署nginx+php
    OpenCV1-VS2022+OpenCV环境配置
    【docker部署nacos详细步骤《一》】
    OpenSSH升级
    TiKV 内存参数性能调优
    音频编码器为packed(非planar)格式时的说明
    22多校5 - Don‘t Starve(DP,依靠边更新端点)
  • 原文地址:https://blog.csdn.net/m0_72254454/article/details/126611239