news 2026/6/18 11:04:22

Java中的时间类型介绍及使用场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中的时间类型介绍及使用场景

Java中的时间类型介绍及使用场景

1. Date 类

介绍

Date是Java最早的日期时间类,位于java.util包中。虽然功能相对简单,但在很多遗留系统中仍在广泛使用。

使用场景

  • 与旧版本Java代码兼容
  • 简单的时间戳操作
  • 第三方库的时间参数传递

代码示例

importjava.util.Date;importjava.text.SimpleDateFormat;// 创建和赋值DatecurrentDate=newDate();// 当前时间DatespecificDate=newDate(1234567890000L);// 指定毫秒数// 打印值System.out.println("当前时间: "+currentDate);// 输出示例: 当前时间: Mon Dec 25 14:30:45 CST 2023System.out.println("指定时间: "+specificDate);// 输出示例: 指定时间: Fri Feb 13 20:31:30 CST 2009// Date转字符串 (yyyy-MM-dd HH:mm:ss)SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");StringdateString=sdf.format(currentDate);System.out.println("Date转字符串: "+dateString);// 输出示例: Date转字符串: 2023-12-25 14:30:45// 字符串转Date (yyyy-MM-dd HH:mm:ss)try{StringtimeStr="2023-12-25 14:30:45";DateparsedDate=sdf.parse(timeStr);System.out.println("字符串转Date: "+parsedDate);// 输出示例: 字符串转Date: Mon Dec 25 14:30:45 CST 2023}catch(Exceptione){e.printStackTrace();}

2. Calendar 类

介绍

CalendarDate的改进版本,提供了更丰富的日期操作方法,可以方便地获取和设置日期的各个组成部分。

使用场景

  • 需要获取或设置日期的特定部分(年、月、日等)
  • 复杂的日期计算
  • 本地化日期处理

代码示例

importjava.util.Calendar;importjava.text.SimpleDateFormat;// 创建和赋值Calendarcalendar=Calendar.getInstance();calendar.set(2023,Calendar.DECEMBER,25,14,30,45);// 打印值System.out.println("Calendar时间: "+calendar.getTime());// 输出示例: Calendar时间: Mon Dec 25 14:30:45 CST 2023// Calendar转字符串 (yyyy-MM-dd HH:mm:ss)SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");StringcalendarString=sdf.format(calendar.getTime());System.out.println("Calendar转字符串: "+calendarString);// 输出示例: Calendar转字符串: 2023-12-25 14:30:45// 字符串转Calendar (yyyy-MM-dd HH:mm:ss)try{StringtimeStr="2023-12-25 14:30:45";CalendarparsedCalendar=Calendar.getInstance();parsedCalendar.setTime(sdf.parse(timeStr));System.out.println("字符串转Calendar: "+parsedCalendar.getTime());// 输出示例: 字符串转Calendar: Mon Dec 25 14:30:45 CST 2023}catch(Exceptione){e.printStackTrace();}

3. LocalDateTime (Java 8+)

介绍

LocalDateTime是Java 8引入的新时间API的一部分,位于java.time包中。它是不可变的、线程安全的,并提供了丰富的方法来进行日期时间操作。

使用场景

  • 现代Java应用开发
  • 需要线程安全的日期时间处理
  • 复杂的日期时间计算和格式化

代码示例

importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;// 创建和赋值LocalDateTimecurrentDateTime=LocalDateTime.now();// 当前时间LocalDateTimespecificDateTime=LocalDateTime.of(2023,12,25,14,30,45);// 打印值System.out.println("当前时间: "+currentDateTime);// 输出示例: 当前时间: 2023-12-25T14:30:45.123System.out.println("指定时间: "+specificDateTime);// 输出示例: 指定时间: 2023-12-25T14:30:45// LocalDateTime转字符串 (yyyy-MM-dd HH:mm:ss)DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");StringdateTimeString=currentDateTime.format(formatter);System.out.println("LocalDateTime转字符串: "+dateTimeString);// 输出示例: LocalDateTime转字符串: 2023-12-25 14:30:45// 字符串转LocalDateTime (yyyy-MM-dd HH:mm:ss)StringtimeStr="2023-12-25 14:30:45";LocalDateTimeparsedDateTime=LocalDateTime.parse(timeStr,formatter);System.out.println("字符串转LocalDateTime: "+parsedDateTime);// 输出示例: 字符串转LocalDateTime: 2023-12-25T14:30:45

4. LocalDate (Java 8+)

介绍

LocalDate表示不带时间的日期,只包含年、月、日信息。

使用场景

  • 只需要处理日期而不需要时间的场景
  • 生日、纪念日等日期记录
  • 日期范围计算

代码示例

importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;// 创建和赋值LocalDatecurrentDate=LocalDate.now();// 今天LocalDatespecificDate=LocalDate.of(2023,12,25);// 指定日期// 打印值System.out.println("今天: "+currentDate);// 输出示例: 今天: 2023-12-25System.out.println("指定日期: "+specificDate);// 输出示例: 指定日期: 2023-12-25// LocalDate转字符串 (yyyy-MM-dd HH:mm:ss)// 注意:LocalDate只有日期部分,时间部分默认为00:00:00DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");StringdateString=currentDate.atStartOfDay().format(formatter);System.out.println("LocalDate转字符串: "+dateString);// 输出示例: LocalDate转字符串: 2023-12-25 00:00:00// 字符串转LocalDate (yyyy-MM-dd HH:mm:ss)StringdateStr="2023-12-25 14:30:45";LocalDateparsedDate=LocalDate.parse(dateStr.substring(0,10));// 只取日期部分System.out.println("字符串转LocalDate: "+parsedDate);// 输出示例: 字符串转LocalDate: 2023-12-25

5. LocalTime (Java 8+)

介绍

LocalTime表示不带日期的时间,只包含时、分、秒、纳秒信息。

使用场景

  • 只需要处理时间而不需要日期的场景
  • 工作时间、营业时间等时间记录
  • 时间段计算

代码示例

importjava.time.LocalTime;importjava.time.format.DateTimeFormatter;// 创建和赋值LocalTimecurrentTime=LocalTime.now();// 当前时间LocalTimespecificTime=LocalTime.of(14,30,45);// 指定时间// 打印值System.out.println("现在时间: "+currentTime);// 输出示例: 现在时间: 14:30:45.123System.out.println("指定时间: "+specificTime);// 输出示例: 指定时间: 14:30:45// LocalTime转字符串 (yyyy-MM-dd HH:mm:ss)// 注意:LocalTime只有时间部分,日期部分需要额外补充LocalDatedummyDate=LocalDate.now();DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");StringtimeString=dummyDate.atTime(currentTime).format(formatter);System.out.println("LocalTime转字符串: "+timeString);// 输出示例: LocalTime转字符串: 2023-12-25 14:30:45// 字符串转LocalTime (yyyy-MM-dd HH:mm:ss)StringtimeStr="2023-12-25 14:30:45";LocalTimeparsedTime=LocalTime.parse(timeStr.substring(11));// 只取时间部分System.out.println("字符串转LocalTime: "+parsedTime);// 输出示例: 字符串转LocalTime: 14:30:45

总结

时间类型特点主要使用场景
Date传统时间类,功能简单兼容旧代码、简单时间戳
Calendar功能丰富,可设置各部分复杂日期操作、本地化处理
LocalDateTime线程安全,API现代新项目开发、复杂时间处理
LocalDate仅日期部分生日、纪念日等日期记录
LocalTime仅时间部分工作时间、营业时间等记录

SQL Server 时间类型与 Java 类型映射

SQL Server 时间类型映射关系

1.date类型

  • 可映射的 Java 类型
    • LocalDate(推荐)
    • Date
    • Timestamp
  • 推荐类型LocalDate
  • 原因LocalDate只包含日期部分,与 SQL Serverdate类型完美匹配

2.datetime类型

  • 可映射的 Java 类型
    • LocalDateTime(推荐)
    • Timestamp
    • Date
  • 推荐类型LocalDateTime
  • 原因LocalDateTime是现代时间API,线程安全且API友好

3.datetime2类型

  • 可映射的 Java 类型
    • LocalDateTime(推荐)
    • Timestamp
    • Date
  • 推荐类型LocalDateTime
  • 原因:提供更高精度,LocalDateTime能很好地处理这种精度

4.smalldatetime类型

  • 可映射的 Java 类型
    • LocalDateTime(推荐)
    • Timestamp
    • Date
  • 推荐类型LocalDateTime
  • 原因:虽然精度较低,但LocalDateTime仍是最合适的现代API选择

5.time类型

  • 可映射的 Java 类型
    • LocalTime(推荐)
    • Date(需配合日期)
    • Time
  • 推荐类型LocalTime
  • 原因LocalTime只处理时间部分,与time类型语义一致

6.datetimeoffset类型

  • 可映射的 Java 类型
    • OffsetDateTime(推荐)
    • ZonedDateTime
  • 推荐类型OffsetDateTime
  • 原因:专门用于处理带时区偏移的时间数据

推荐总结

SQL Server 类型推荐 Java 类型理由
dateLocalDate语义匹配,只包含日期
datetimeLocalDateTime现代API,功能完整
datetime2LocalDateTime高精度支持
smalldatetimeLocalDateTimeAPI一致性
timeLocalTime只处理时间部分
datetimeoffsetOffsetDateTime时区偏移支持

推荐优先使用java.time包中的新时间API,因为它们是不可变的、线程安全的,并提供了更清晰的API设计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 7:43:59

革命性EPUB阅读解决方案:Awaken智能同步系统

革命性EPUB阅读解决方案:Awaken智能同步系统 【免费下载链接】Awaken 一个基于WebDAV的全平台EPUB阅读器,支持笔记、进度、书签同步,支持Kindle笔记导入。 项目地址: https://gitcode.com/gh_mirrors/aw/Awaken 在数字阅读时代&#x…

作者头像 李华
网站建设 2026/6/16 17:42:18

23、保障网络连接安全:创建VPN或DMZ

保障网络连接安全:创建VPN或DMZ 在当今数字化时代,网络安全至关重要。VPN(虚拟专用网络)和DMZ(非军事区)是两种常用的网络安全技术,它们可以帮助我们保护网络连接的安全。本文将详细介绍如何创建VPN和DMZ,并提供相应的操作步骤和测试方法。 1. 创建OpenVPN隧道 启动…

作者头像 李华
网站建设 2026/6/17 1:33:36

腾讯SRPO:10分钟训练让AI生图真实感提升3倍,告别“塑料质感“

腾讯SRPO:10分钟训练让AI生图真实感提升3倍,告别"塑料质感" 【免费下载链接】SRPO 腾讯SRPO是基于FLUX.1.dev优化的文本生成图像模型,采用Direct-Align技术提升降噪效率,通过语义相对偏好优化实现奖励在线调整。无需依赖…

作者头像 李华
网站建设 2026/6/17 18:33:07

springboot基于vue的电子小说书城系统_9wv9nd88

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/6/15 9:59:24

实时云渲染的技术原理是什么?哪个实时云渲染系统更好?

在数字化时代,实时云渲染技术正逐渐改变图形处理和内容交互的方式。无论是游戏、虚拟现实、工业设计还是在线教育,实时云渲染都能通过云端强大的计算能力,将高质量的图形内容实时传输到终端设备,降低对本地硬件的要求。那么&#…

作者头像 李华
网站建设 2026/6/17 20:30:23

springboot基于vue的电竞赛事报名裁判管理系统_24a4vc46

目录 已开发项目效果实现截图开发技术系统开发工具: 核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&am…

作者头像 李华