• Java8 日期处理详细汇总


    简要:
    Java Calendar 处理时间和日期,不仅仅性能差,且代码很冗余,建议用 Java 8 提供的新 API 。
    Java 处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。

    示例1:Java 8 中获取今天的日期
    Java 8 中的 LocalDate 用于表示当天日期。和 java.util.Date 不同,它只有日期,不包含时间

    public class Demo01 {
        public static void main(String[] args) {
            LocalDate today = LocalDate.now();
            System.out.println("今天的日期:"+today);
        }
    }
    /*
     运行结果:
      今天的日期:2019-06-07
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    public class Demo02 {
        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);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    示例 3:在 Java 8 中获取当前的时间戳
    Instant 类有一个静态工厂方法 now() 会返回当前的时间戳,如下所示:
    在这里插入图片描述
    | 示例 4:Java 8 中如何使用预定义的格式化工具去解析或格式化日期
    在这里插入图片描述
    | 示例 5:字符串互转日期类型

    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例 6:如何用 Java 判断日期是早于还是晚于另一个日期
    在 Java 8 中,LocalDate 类有两类方法 isBefore() 和 isAfter() 用于比较日期。调用 isBefore() 方法时,如果给定日期小于当前日期则返回 true。

     LocalDate today = LocalDate.now();
    
            LocalDate tomorrow = LocalDate.of(2018,2,6);
            if(tomorrow.isAfter(today)){
                System.out.println("之后的日期:"+tomorrow);
            }
    
            LocalDate yesterday = today.minus(1, ChronoUnit.DAYS);
            if(yesterday.isBefore(today)){
                System.out.println("之前的日期:"+yesterday);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    【我的C/C++语言学习进阶之旅】JNI开发之转换C层返回的结构体为Java实体Bean
    【数据库优化】明明加了唯一索引,为什么还是产生重复数据?
    Python获取某平台主播照片, 实现颜值检测, 进行排名
    系列九、Redis的发布订阅
    .NET并行计算
    RabbitMQ初步到精通-第七章-RabbitMQ之延迟队列
    2022牛客暑期多校训练营3(ACFGJ)
    springBoot中集成Swagger
    拉格朗日粒子扩散模式FLEXPART,在大气污染溯源中的应用
    Leetcode.2867 统计树中的合法路径数目
  • 原文地址:https://blog.csdn.net/Wn1999/article/details/126099834