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
  • 相关阅读:
    最近看到C#里面的抽象类和接口,还有索引器。
    Memcached服务端自动启动
    python操作MySQL数据库
    Linux开放端口
    关于数组的几道面试题
    这群超酷的开发者,是如何轻松搞定软件开发?
    五分钟开发好你的第一个人工智能应用
    Case Study: 技术和商业的结合点在哪里?
    【江湖趣事】话说开源界和微软的那些往日恩怨
    评微软收购GitHub
  • 原文地址:https://www.cnblogs.com/Edward-Wang/p/12201004.html
Copyright © 2011-2022 走看看