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了。

  • 相关阅读:
    用几何画板画三星状图形的方法有哪些
    ChemDraw 15.1 Pro插入阿尔法可以这样做
    用MathType编辑异或与非符号有什么方法
    整合Thinkphp数据库基本操作CURD,界面datagrid采用EasyUi的Demo
    可编辑表格
    jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、
    jfinal 使用类里的方法
    左右值无限分类实现算法
    PHP递归实现无限级分类
    ThinkPHP自动填充实现无限级分类的方法
  • 原文地址:https://www.cnblogs.com/tu-emily/p/12017234.html
Copyright © 2011-2022 走看看