zoukankan      html  css  js  c++  java
  • java8中 日期/时间 的使用

      java8之前的时间类都是线程不安全的,且操作相对来说比较复杂。而java8中的时间类都是线程安全的。
      而它是如何实现线程安全的呢?以LocalDateTime为例。
      看LocalDateTime源码,我们可以看到这个类的实现描述:This class is immutable and thread-safe   该类是不可变且线程安全的。

    LocalDateTime 是final 修饰的,其成员变量也都是final修饰的,LocalDateTime 每次调用方法都会返回一个新的实例。

          private static LocalDateTime now = LocalDateTime.now();    
            private static Date today = new Date();
            public static void main(String[] args) {
                System.out.println(now.toString());
                now.minusDays(5);
                System.out.println(now.toString());
    
                System.out.println("------------------------");
    
                System.out.println(today.toString());
                today.setTime(5);
                System.out.println(today.toString());
            }        
    

      可以发现now是没有被改变的,而today已经变了。

    下面总结下一些常见的对时间的操作(java8)

    1.获取当前日期:

    Date date = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant())
    String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))

    2.获取几年,几个月,几周....前或者后的日期:

    Date startTime = Date.from(LocalDateTime.now().minusMonths(5).atZone(ZoneId.systemDefault()).toInstant());
    
      minusYears, minusMonths, minusWeeks...

    3.获取某天的起止时间:

    String beginDate = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    String endDate = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

       就不用在后面拼接00:00:00或者23:59:59了。

  • 相关阅读:
    第八篇:Vue组件传参
    第七篇:Vue的路由逻辑跳转
    第六篇:组件数据局部化处理
    第五篇:Vue项目的初始化
    第四篇:Vue的项目开发
    第三篇:Vue指令
    第二篇:Vue实例成员
    第一篇:Vue基础
    第六篇:js对象,类和函数补充
    AngularJS之jeDate日期控件基本使用
  • 原文地址:https://www.cnblogs.com/tu-emily/p/12017234.html
Copyright © 2011-2022 走看看