(翻译)How to get the current date/time in Java

本文介绍了在Java中获取当前日期和时间的不同方法,包括使用System.currentTimeMillis(), new Date(), Calendar.getInstance(), Joda-Time及Java 8中的LocalDateTime.now()和ZonedDateTime.now()等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://stackoverflow.com/questions/5175728/how-to-get-the-current-date-time-in-java

在Java中获取当前日期/时间

描述

在Java中获取当前日期/时间的最佳方法是什么?

回答

这取决于您想要的日期/时间形式:

  • 如果您希望将日期/时间作为单个数值,则使用System.currentTimeMillis()能获得,这个函数返回UNIX纪元(作为Java long)之后的毫秒数。此值是UTC时间点的增量,并且与本地时区无关…假设系统时钟已设置正确。
  • 如果您希望表单中的日期/时间组件允许您以数字方式访问(年,月等),则可以使用以下方法之一:
    • new Date()为您提供一个当前日期/时间初始化的Data对象。问题是DateAPI方法大多存在缺陷…并且已弃用。
    • Calendar.getInstance()为您提供一个当前日期/时间,并使用默认的LocaleTimeZone初始化的Calendar对象,其他重载允许您使用特定LocaleTimeZoneCalendat可以使用,但API仍然很麻烦。
    • new org.joda.time.DateTime()为您提供一个当前日期/时间,并使用默认的时区和年表初始化的Joda-time对象。还有很多其他的Joda的替代方案…这里不描述太多。(但请注意,有些人报告说Joda时间有性能问题。例如,Jodatime的LocalDateTime在第一次使用时速度很慢。)
    • 在Java中8,调用LocalDateTime.now()ZonedDateTime.now()会给你展示 1 当前日期/时间。

在Java 8之前,大多数了解这些事情的人都建议Joda-time(到目前为止)作为处理涉及时间点和持续时间计算的最佳Java API。在Java 8到来时,这已不再适用。但是,如果您已经在代码库中使用Joda,则没有充足理由需要去迁移。


回答2

在Java 8中它是:
LocalDateTime.now()

如果您需要时区信息:
ZonedDateTime.now()

如果你想打印花哨的格式化字符串:
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))


  1. 请注意,LocalDateTime不包含时区。正如javadoc所说:“它不能代表时间线上的瞬间,没有附加信息,如偏移或时区。↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值