zoukankan      html  css  js  c++  java
  • Java8中18个日期处理方式

    Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。

    Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。

    示例1: Java 8 中获取今天的日期

    Java 8 中的 LocalDate 用于表示当天日期。和java.util.Date不同,它只有日期,不包含时间。当你仅需要表示日期时就用这个类。

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    
    /**
     * Java 8 中的时间
     */
    public class DateUtil {
      public static void main(String[] args) {
          LocalDate today = LocalDate.now();
          System.out.println("今天的日期:" + today);
    
      }
    }

    输出结果为:

    今天的日期:2020-01-16

     示例2 : Java 8 中获取年、月、日信息

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    
    /**
     * 示例2:Java 8中获取年、月、日信息
     */
    public class DateUtil {
      public static void main(String[] args) {
          LocalDate today = LocalDate.now();
          int year = today.getYear();
          int month = today.getMonthValue();
          int day = today.getDayOfMonth();
    
          System.out.println("year:"+year);
          System.out.println("month:"+month);
          System.out.println("day:"+day);
      }
    }

    输出结果为:

    year:2020
    month:1
    day:16

    示例3:Java 8中处理特定日期

    我们通过静态工厂方法now()非常容易地创建了当天日期,你还可以调用另一个有用的工厂方法LocalDate.of()创建任意日期, 该方法需要传入年、月、日做参数,返回对应的LocalDate实例。这个方法的好处是没再犯老API的设计错误,比如年度起始于1900,月份是从0开 始等等。

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    
    /**
     * 示例2:Java 8中获取年、月、日信息
     */
    public class DateUtil {
      public static void main(String[] args) {
          LocalDate date = LocalDate.of(2020,1,16);
    
          System.out.println("自定义日期:"+date);
      }
    }

    输出结果为:

    自定义日期:2020-01-16

    示例4:Java 8 中判断两个日期是否相等

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    
    /**
     * 示例4:Java 8中判断两个日期是否相等
     */
    public class DateUtil {
      public static void main(String[] args) {
          LocalDate date1 = LocalDate.now();
          LocalDate date2 = LocalDate.of(2018,2,5);
    
          if (date1.equals(date2)){
              System.out.println("日期相等");
          }else {
              System.out.println("日期不相等");
          }
    
    
      }
    }

    输出结果:

    日期不相等

    示例5:Java 8中检查像生日这种周期性事件

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    import java.time.MonthDay;
    
    /**
     * 示例5:Java 8中检查像生日这种周期性事件
     */
    public class DateUtil {
      public static void main(String[] args) {
          LocalDate date1 = LocalDate.now();
          LocalDate date2 = LocalDate.of(2018,1,16); //1月16 是生日
    
          MonthDay birthday = MonthDay.of(date2.getMonth(),date2.getDayOfMonth());
          MonthDay currentMonthDay = MonthDay.from(date1);
    
          if (currentMonthDay.equals(birthday)){
              System.out.println("是你的生日");
          }else {
              System.out.println("不是你的生日");
          }
      }
    }

    输出结果:

    是你的生日

    示例14:如何在Java 8中检查闰年

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    
    /**
     * 示例14:如何在Java 8中检查闰年
     */
    public class DateUtil {
      public static void main(String[] args) {
          LocalDate date = LocalDate.now();
    
          if (date.isLeapYear()){
              System.out.println("是闰年");
          }else {
              System.out.println("不是闰年");
          }
      }
    }

    输出结果:

    是闰年

    示例17:Java 8中如何使用预定义的格式化工具去解析或格式化日期

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    import java.time.format.DateTimeFormatter;
    
    /**
     * 示例17:Java 8中如何使用预定义的格式化工具去解析或格式化日期
     */
    public class DateUtil {
      public static void main(String[] args) {
          String dayAfterTomorrow = "20200116";
          LocalDate formatted = LocalDate.parse(dayAfterTomorrow, DateTimeFormatter.BASIC_ISO_DATE);
          System.out.println(dayAfterTomorrow +"  格式化后的日期为:  "+formatted);
      }
    }

    输出结果:

    20200116  格式化后的日期为:  2020-01-16

    示例18:字符串互转日期类型

    package com.imocc.mall.test;
    
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    /**
     * 示例18:字符串互转日期类型
     */
    public class DateUtil {
      public static void main(String[] args) {
          LocalDateTime date = LocalDateTime.now();
          DateTimeFormatter format1 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
    
          //日期转字符串
          String str = date.format(format1);
    
          System.out.println("日期转换为字符串:" + str);
    
          DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
    
          //字符串转日期
          LocalDate date2 = LocalDate.parse(str,format2);
          System.out.println("日期类型:"+date2);
      }
    }

    输出结果:

    日期转换为字符串:2020/01/16 15:07:33
    日期类型:2020-01-16
  • 相关阅读:
    我爱Java系列之---【SpringBoot打成war包部署】
    279. Perfect Squares
    矩阵dfs--走回路
    112. Path Sum
    542. 01 Matrix
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    Invert Binary Tree
    563 Binary Tree Tilt
    145 Binary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/Edward-Wang/p/12201004.html
Copyright © 2011-2022 走看看