JAVA如何获取当前时间呢?

欣喜 Java经验 发布时间:2025-01-27 15:46:12 阅读数:5506 1
下文笔者讲述java代码获取当前时间的方法及示例分享,如下所示
获取当前时间   
    方式1:
	   使用System.currentTimeMillis
	方式2:
	   使用Date 
	方式3:
	   使用LocalDateTime
	方式4:
	   使用开源工具 Joda-Time 
	      使用开源工具Apache Commons Lang 

Java原生方法

使用System.currentTimeMillis()

long currentTimeMillis = System.currentTimeMillis();
System.out.println("当前时间戳(毫秒): " + currentTimeMillis);
 
优点:
    高效:直接调用系统的时间戳,无额外封装,性能最佳。
    通用:可以轻松转换为Date或自定义格式

缺点:
    返回的仅是毫秒级时间戳,需手动转换为人类可读的时间。
    使用起来不够直观

适用场景:
    适用于性能要求高的场景
	 如日志记录、计算耗时

使用Date类

 
import java.util.Date;

Date date = new Date();
System.out.println("当前时间(Date): " + date);
 
优点:
    简单直观,直接返回人类可读的时间。

缺点:
    线程不安全:Date 类是可变的,多个线程操作同一个 Date 对象可能会出问题。
    设计过时:Date 类的 API 设计不符合现代开发习惯,已被 java.time 替代。

适用场景:
    早期项目中兼容性需求。

使用Calendar类

import java.util.Calendar;

Calendar calendar = Calendar.getInstance();
System.out.println("当前时间(Calendar): " + calendar.getTime());
 
优点:
    提供了丰富的时间操作方法
	  例:
	   增加天数、月份等。

缺点:
    线程不安全:与 Date 类一样,Calendar 也是可变的,线程不安全。
    冗长繁琐:API 使用起来较复杂且易出错。

适用场景:
    当需要对时间进行复杂的调整操作时(如加减天数),但推荐使用 java.time 替代。

使用Java 8+时间API

Java 8 引入了 java.time 包,极大改善了时间处理的体验。
获取当前时间
 
import java.time.LocalDateTime;

LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间(LocalDateTime): " + now);
 
优点:
    线程安全:java.time 中的所有类都是不可变且线程安全的。
    丰富功能:支持多种操作,如加减时间、格式化等。
    清晰直观:API 设计优雅,符合现代开发习惯。

缺点:
    对于旧版代码需要迁移。
    对新手可能稍显复杂。

适用场景:
    几乎所有场景,特别是多线程和现代化应用开发。

使用开源工具类

使用Joda-Time

import org.joda.time.DateTime;

DateTime dateTime = new DateTime();
System.out.println("当前时间(Joda-Time): " + dateTime);
 
优点:
    丰富的时间操作功能(早期最强大的时间库)。
    API 设计优雅,使用简单。

缺点:
    已被 java.time 替代,功能基本被继承。
    需要额外引入依赖。

适用场景:
    老旧项目中使用 Joda-Time 时的兼容需求。

使用Apache Commons Lang

import org.apache.commons.lang3.time.DateUtils;

Date now = new Date();
Date truncatedDate = DateUtils.truncate(now, Calendar.DATE);
System.out.println("当前时间(Apache Commons Lang): " + truncatedDate);
 
优点:
    提供了许多 Date 和 Calendar 的实用工具方法。
    兼容性强,可与 Java 原生时间类配合使用。

缺点:
    不支持现代化的 java.time API。
    功能较为有限。

适用场景:
    项目中已有 Commons Lang 依赖的场景。

各种获取当前时间的方法比较

方法 优点 缺点 推荐场景
System.currentTimeMillis 性能高效,直接获取时间戳 无法直接获取人类可读的时间 需要计算耗时、记录日志时
Date 简单易用,返回可读时间 线程不安全,API 设计过时 兼容旧项目
Calendar 支持丰富的时间操作 线程不安全,API 冗长复杂 时间计算需求(不推荐,使用 java.time)
LocalDateTime 线程安全,功能强大,现代化 API 对旧版代码迁移较多 多线程场景、现代化应用
Joda-Time 设计优雅,功能强大 被 java.time 替代 老旧项目
Apache Commons Lang 工具方法丰富,适配原生类 功能有限,依赖额外库 已引入 Commons Lang 的项目
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202501/17379656108270.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者