根据当前系统时间创建日期对象Date(long time); 根据传入的毫秒值时间创建日期对象B 1 2 3 4 5 6 <!-- more --> #### 1.Date类 ##### A.构造方法
Date(); 根据当前系统时间创建日期对象 Date(long time); 根据传入的毫秒值时间创建日期对象
long getTime(); 获取当前日期对象的毫秒值时间 String toLocaleString(); 根据本地格式转换日期对象 !
1 2 #### 2.DateFormat类&SimpleDateFormat类 SimpleDateFormat(String );根据指定模板创建日期格式化对象
String format(Date d); 根据指定格式格式化日期对象 Date parse(String s); 根据指定格式解析字符串
1 2 #### 3.Calendar类 ##### A.创建对象方式
Calendar c =Calendar.newlnstance(); 获取日历类对象
int get(int n); 获取指定日历字段信息 void set(int n,int value); 将指定日历字段设置为指定的值 void add(int n,int value); 将指定日历字段增加或减少指定的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ### 一、Java日期类基础 #### 1.1 Date类 #### 1.2 DateFormat类&SimpleDateFormat类 #### 1.3 Calendar类 ### 二、日期处理的实际应用 #### 2.1 Date类的使用场景 Date类是Java中处理日期和时间的基础类,在实际开发中经常用于: 1. 记录时间戳:记录操作时间、创建时间等 2. 时间计算:计算时间差、添加或减少时间 3. 时间格式化:将日期转换为指定格式的字符串 4. 时间比较:比较两个日期的先后顺序 ### 三、SimpleDateFormat的使用技巧 #### 3.1 常用格式模式 - `yyyy`:四位年份 - `MM`:两位月份(01-12) - `dd`:两位日期(01-31) - `HH`:24小时制小时(00-23) - `mm`:分钟(00-59) - `ss`:秒(00-59) #### 3.2 示例代码 ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdf.format(new Date()); System.out.println(dateStr); // 输出:2024-01-15 14:30:45
3.3 注意事项 线程安全:SimpleDateFormat不是线程安全的,多线程环境下需要使用ThreadLocal 性能考虑:频繁创建SimpleDateFormat对象会影响性能,建议复用 异常处理:parse方法可能抛出ParseException,需要处理异常 四、Calendar类的强大功能 Calendar类提供了更丰富的日期操作功能:
4.1 获取特定日期信息 1 2 3 4 Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH) + 1; // 月份从0开始 int day = c.get(Calendar.DAY_OF_MONTH);
`#### 日期计算```java
1 2 c.add(Calendar.DAY_OF_MONTH, 7); // 加7天 c.add(Calendar.MONTH, -1); // 减1个月
`#### 设置特定日期```java
1 2 c.set(2024, 0, 15); // 设置为2024年1月15日 c.set(Calendar.HOUR_OF_DAY, 14); // 设置为14点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ### 五、现代Java日期时间API(Java 8+) Java 8引入了新的日期时间API,提供了更好的设计: #### 5.1 LocalDate、LocalTime、LocalDateTime LocalDate date = LocalDate.now(); LocalTime time = LocalTime.now(); LocalDateTime dateTime = LocalDateTime.now(); `#### DateTimeFormatter```java DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formatted = dateTime.format(formatter); LocalDate tomorrow = LocalDate.now().plusDays(1); LocalDate lastMonth = LocalDate.now().minusMonths(1);
六、常见问题和解决方案 6.1 问题1:时区处理 使用Calendar的时区设置 使用Java 8的ZonedDateTime 统一使用UTC时间存储 6.2 问题2:日期格式化线程安全 1 问题:SimpleDateFormat在多线程环境下的线程安全问题
使用ThreadLocal包装SimpleDateFormat 使用Java 8的DateTimeFormatter(线程安全) 每次创建新实例(性能较差) 6.3 问题3:日期比较 1 2 // 使用Date的compareTo方法 int result = date1.compareTo(date2);
1 2 // 使用Calendar的before/after方法 boolean isBefore = cal1.before(cal2);
1 2 // 使用Java 8的isBefore/isAfter boolean isBefore = localDate1.isBefore(localDate2);
### 七、最佳实践建议
1. 优先使用Java 8+的日期时间API:设计更合理,API更易用
2. 注意时区问题:明确时区设置,避免时间错误
3. 格式化字符串统一管理:将日期格式字符串定义为常量
4. 异常处理:日期解析时要处理可能的异常
5. 性能优化:避免频繁创建日期格式化对象
### 八、总结
日期处理是编程中的常见需求,Java提供了多种日期时间处理类。虽然Date和Calendar类仍然可用,但建议在新项目中使用Java 8+的新日期时间API,它们提供了更好的设计和更丰富的功能。
掌握日期处理的基本方法,能够帮助我们更好地处理各种日期时间相关的业务需求。
本文标题: Java日期相关类详解
发布时间: 2019年03月24日 00:00
最后更新: 2025年12月30日 08:54
原始链接: https://haoxiang.eu.org/c796f623/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!