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

Java学习手册:Java时间类使用

Java时间类使用

一、传统时间类的使用(java.util.Datejava.util.Calendar

  • DateDate 类表示特定的瞬间,精确到毫秒。它的常用方法包括获取时间、将时间设置为指定的日期和时间等。例如:
Date date = new Date(); // 获取当前时间
long timeInMillis = date.getTime(); // 获取自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数
System.out.println(date.toString()); // 输出日期和时间字符串
  • CalendarCalendar 类是一个抽象类,它提供了一整套方法来操作日期和时间,包括获取和设置年、月、日、小时、分钟、秒等。例如:
Calendar calendar = Calendar.getInstance(); // 获得当前日期和时间的 Calendar 对象
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 注意:月份是从 0 开始的
int day = calendar.get(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.YEAR, 2024); // 设置年份
Date date = calendar.getTime(); // 将 Calendar 转换为 Date 对象

二、java.time 包(Java 8 及以上版本)

  • LocalDateLocalTimeLocalDateTimeLocalDate 表示不带时间的日期,LocalTime 表示不带日期的时间,LocalDateTime 表示日期和时间。它们是不可变对象,常用的静态方法包括now()of()等。例如:
LocalDate localDate = LocalDate.now(); // 获取当前日期
LocalTime localTime = LocalTime.now(); // 获取当前时间
LocalDateTime localDateTime = LocalDateTime.now(); // 获取当前日期和时间
LocalDate date = LocalDate.of(2024, 10, 1); // 创建指定日期的对象
LocalDateTime dateTime = LocalDateTime.of(2024, 10, 1, 12, 0, 0); // 创建指定日期和时间的对象
  • DateTimeFormatter :用于格式化日期和时间,它是一个不可变的对象。常用的静态方法包括ofPattern()等。例如:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = localDateTime.format(formatter); // 格式化日期和时间
LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter); // 解析字符串为 LocalDateTime 对象
  • PeriodDurationPeriod 表示日期间隔,Duration 表示时间间隔。例如:
Period period = Period.between(localDate, LocalDate.now()); // 计算两个日期之间的间隔
Duration duration = Duration.between(localTime, LocalTime.now()); // 计算两个时间之间的间隔
  • ZonedDateTime :表示带时区的日期和时间。例如:
ZonedDateTime zonedDateTime = ZonedDateTime.now(); // 获取当前日期和时间,带默认时区
ZonedDateTime zdtWithZone = zonedDateTime.withZoneSameInstant(ZoneId.of("America/New_York")); // 转换时区

三、时间操作示例

  • 获取当前日期和时间并格式化输出
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateTimeExample {public static void main(String[] args) {LocalDateTime localDateTime = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String formattedDateTime = localDateTime.format(formatter);System.out.println(formattedDateTime);}
}
  • 计算两个日期之间的天数差
import java.time.LocalDate;
import java.time.Period;public class DateDifferenceExample {public static void main(String[] args) {LocalDate date1 = LocalDate.of(2024, 1, 1);LocalDate date2 = LocalDate.now();Period period = Period.between(date1, date2);System.out.println("天数差: " + period.getDays());}
}
  • 在特定时间基础上增加指定的天数和小时数
import java.time.LocalDateTime;public class AddTimeExample {public static void main(String[] args) {LocalDateTime localDateTime = LocalDateTime.now();LocalDateTime updatedDateTime = localDateTime.plusDays(2).plusHours(3);System.out.println(updatedDateTime);}
}

四、总结

Java 提供了丰富的日期和时间类,包括传统的DateCalendar类,以及 Java 8 引入的java.time包中的新类。通过使用这些类,可以方便地进行日期和时间的获取、格式化、解析、计算等操作。在实际开发中,建议优先使用java.time包中的类,因为它们提供了更强大、更易用的功能,并且具有不可变性,避免了线程安全等问题。掌握这些时间类的使用方法,可以帮助开发人员更好地处理与日期和时间相关的业务逻辑。

http://www.xdnf.cn/news/1854.html

相关文章:

  • 16:00开始面试,16:08就出来了,问的问题有点变态。。。
  • react 常用钩子 hooks 总结
  • 《Keras 3 :使用 TFServing 提供 TensorFlow 模型》
  • Linux中你必须掌握的20个常见命令,提升工作效率!
  • 问答页面支持拖拽和复制粘贴文件,MaxKB企业级AI助手v1.10.6 LTS版本发布
  • conformer编码器
  • DeskGo 4.0(官方版)桌面管理工具软件下载及安装教程
  • JDBC之ORM思想及SQL注入
  • UWA DAY 2025 正式启动|十年筑基,驱动游戏未来引擎
  • Kubernetes 节点 Not Ready 时 Pod 驱逐机制深度解析(上)
  • Web漏洞--XSS之订单系统和Shell箱子
  • Android APP 热修复原理
  • ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变
  • python实现简单的UI交互
  • RT Thread 发生异常时打印输出cpu寄存器信息和栈数据
  • C++11介绍
  • 【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)
  • C++面试复习日记(8)2025.4.25,malloc,free和new,delete的区别
  • Maven基础、HTTP协议、请求响应(Web后端笔记第一期)
  • 策略模式(Strategy Pattern)详解
  • 深度学习--自然语言处理统计语言与神经语言模型
  • 打造高功率、高电流和高可靠性电路板的厚铜PCB生产
  • 基于STM32的温室环境智能调控系统仿真(仿真+代码)
  • 统计术语学习
  • 鸿蒙应用开发证书考试的一点想法
  • 大量化平台也有坑?khQuant回测横评第二弹,一次“排雷”实录【AI量化第28篇】
  • GitHub每日最火火火项目(4.25)
  • 【沉浸式求职学习day25】【部分网络编程知识分享】【基础概念以及简单代码】
  • 防火墙原理与应用总结
  • re.compile(pattern) 是什么