当前位置: 首页 > article >正文

Java中的日期类

在Java中,处理日期和时间的类主要集中在java.utiljava.time包下。由于Java的版本演进,日期和时间的API也经历了重大更新和改进。以下是详细的讲解:

1. 传统日期类 (java.util)

a. java.util.Date
  • 简介Date类表示特定的瞬间,精确到毫秒,但不提供日历字段,如年、月或日。
  • 示例代码
    import java.util.Date;
    
    public class DateExample {
        public static void main(String[] args) {
            Date now = new Date(); // 创建当前日期时间
            System.out.println(now); // 打印日期时间
        }
    }
b. java.util.Calendar
  • 简介Calendar是抽象类,提供通用的日历系统框架,包括日历字段(如年、月、日)和操作这些字段的方法。
  • 示例代码
    import java.util.Calendar;
    
    public class CalendarExample {
        public static void main(String[] args) {
            Calendar calendar = Calendar.getInstance();
            System.out.println(calendar.get(Calendar.YEAR)); // 获取当前年份
        }
    }
c. java.text.SimpleDateFormat
  • 简介:用于格式化和解析日期的工具。可以指定日期/时间的显示格式。
  • 示例代码
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class SimpleDateFormatExample {
        public static void main(String[] args) {
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(date)); // 格式化日期
        }
    }

2. 新日期时间API (java.time)

a. java.time.LocalDate
  • 简介:只表示日期,不包含时间和时区信息。
  • 示例代码
    import java.time.LocalDate;
    
    public class LocalDateExample {
        public static void main(String[] args) {
            LocalDate today = LocalDate.now();
            System.out.println(today); // 打印当前日期
        }
    }
b. java.time.LocalTime
  • 简介:表示时间,不含日期和时区信息。
  • 示例代码
    import java.time.LocalTime;
    
    public class LocalTimeExample {
        public static void main(String[] args) {
            LocalTime time = LocalTime.now();
            System.out.println(time); // 打印当前时间
        }
    }
c. java.time.LocalDateTime
  • 简介:表示日期和时间,但无时区信息。
  • 示例代码
    import java.time.LocalDateTime;
    
    public class LocalDateTimeExample {
        public static void main(String[] args) {
            LocalDateTime dateTime = LocalDateTime.now();
            System.out.println(dateTime); // 打印当前日期和时间
        }
    }
d. java.time.ZonedDateTime
  • 简介:表示带有时区的日期和时间。
  • 示例代码
    import java.time.ZonedDateTime;
    
    public class ZonedDateTimeExample {
        public static void main(String[] args) {
            ZonedDateTime zdt = ZonedDateTime.now();
            System.out.println(zdt); // 打印当前带时区的日期和时间
        }
    }
e. java.time.Instant
  • 简介:表示时间线上瞬间的点,与UTC时间一致。
  • 示例代码
    import java.time.Instant;
    
    public class InstantExample {
        public static void main(String[] args) {
            Instant instant = Instant.now();
            System.out.println(instant); // 打印当前UTC瞬间
        }
    }

总结

  • 传统API (java.util下的类)在旧项目中仍然广泛使用,但存在一些设计上的缺陷和不足。
  • 新API (java.time下的类)在Java 8及更高版本中提供,具有更好的设计和功能,推荐在新项目中使用。

http://www.kler.cn/news/357629.html

相关文章:

  • 鸿蒙应用开发实战-基础语法-变量声明
  • TF-A(Trusted Firmware-A)及其启动流程详解:以stm32MP1平台为例
  • (悬臂)梁结构固有频率理论求解
  • 配合工具,快速学习与体验electron增量更新
  • 探索儿童自闭症康复的奥秘与乐趣
  • 智能家居照明新宠首发:内置降压FP7132调光曲线平滑多路共阳无频闪IC引领未来照明趋势
  • 嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)
  • C语言初阶小练习2(三子棋小游戏的实现代码)
  • 【HTML】构建网页的基石
  • Redis高可用与分布式方案实战指南
  • 浙大数据结构:11-散列4 Hashing - Hard Version
  • Android常用C++特性之std::bind
  • 【Qt】控件——Qt按钮类控件、常用的按钮类控件、按钮类控件的使用、Push Button、Radio Button、Check Box
  • Ubuntu20.04同时安装ROS1和ROS2,如何选择ROS1 or ROS2
  • 深度探索:Linux CentOS 7内核的奥秘与管理之道
  • AVL树的概念与实现
  • [json][ini]文件的相互转化
  • 常见的Java面试题
  • C++ 20 Concept
  • GPTs及Assistant API快速开发AI应用实战