• 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
  • 相关阅读:
    hive 使用总结
    概率问题总结
    Caffe 议事(三):从零开始搭建 ResNet 之 网络的搭建(中)
    Caffe 议事(二):从零开始搭建 ResNet 之 网络的搭建(上)
    不要怂,就是GAN (生成式对抗网络) (六):Wasserstein GAN(WGAN) TensorFlow 代码
    Caffe 议事(一):从零开始搭建 ResNet 之 残差网络结构介绍和数据准备
    不要怂,就是GAN (生成式对抗网络) (五):无约束条件的 GAN 代码与网络的 Graph
    不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN
    不要怂,就是GAN (生成式对抗网络) (三):判别器和生成器 TensorFlow Model
    不要怂,就是GAN (生成式对抗网络) (二):数据读取和操作
  • 原文地址:https://www.cnblogs.com/Edward-Wang/p/12201004.html
Copyright © 2020-2023  润新知