news 2026/3/1 2:22:53

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/2/26 5:51:56

ThinkPad X230黑苹果完美指南:从零开始打造你的macOS工作站

ThinkPad X230黑苹果完美指南:从零开始打造你的macOS工作站 【免费下载链接】X230-Hackintosh READMEs, OpenCore configurations, patches, and notes for the Thinkpad X230 Hackintosh 项目地址: https://gitcode.com/gh_mirrors/x2/X230-Hackintosh Thin…

作者头像 李华
网站建设 2026/2/27 15:52:11

Figma转HTML工具:设计与开发的无缝桥梁技术解析

Figma转HTML工具:设计与开发的无缝桥梁技术解析 【免费下载链接】figma-html Builder.io for Figma: AI generation, export to code, import from web 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html Figma转HTML工具作为现代前端开发流程中的重要…

作者头像 李华
网站建设 2026/2/24 14:10:10

回收系统必备的功能有哪些?

旧衣物回收小程序的主要功能包括: ①用户可以在小程序上进行在线预约回收,平台安排工作人员上门回收旧衣物,节省用户的时间和精力。 ②小程序的覆盖面可以扩大到各个区域,商家可以多个回收站点统一进行上门回收,然后再…

作者头像 李华
网站建设 2026/2/21 14:05:40

29、系统性能问题排查指南

系统性能问题排查指南 在 IT 运维工作中,我们常常会遇到各种系统性能问题,比如服务器变慢、应用程序响应不佳等。这些问题不仅影响用户体验,还可能对业务造成损失。本文将围绕系统的四个核心元素:CPU、内存、存储设备和网络负载管理,详细介绍如何排查和解决系统性能问题。…

作者头像 李华
网站建设 2026/2/25 14:45:37

32、网络与外设故障排查全攻略

网络与外设故障排查全攻略 网络故障排查 在处理网络问题时,了解 NetworkManager 隐藏工作文件的位置很有必要。系统中有几个关键的目录和文件存储着网络配置信息: - /etc/NetworkManager/ 目录下有一个名为 NetworkManager.conf 的配置文件。 - /etc/NetworkManager/…

作者头像 李华