用Java获取当前日期/时间的最佳方法是什么?
这取决于你想要的日期/时间形式:
如果你想将日期/时间作为一个单一的数值,则System.currentTimeMillis()可以用UNIX纪元后的毫秒数(以Java形式long)表示。该值是UTC时间点的增量,并且与本地时区无关…假设系统时钟已正确设置。
System.currentTimeMillis()
long
如果你希望日期/时间的格式允许你以数字方式访问组件(年,月等),则可以使用以下方式之一:
new Date()给你一个Date使用当前日期/时间初始化的对象。问题在于DateAPI方法大多存在缺陷……并且已过时。
new Date()
Calendar.getInstance()Calendar使用默认的Locale和为你提供一个使用当前日期/时间初始化的对象TimeZone。其他重载允许你使用特定的Locale和/或TimeZone。日历可以工作…但是API仍然很麻烦。
Calendar.getInstance()Calendar
new org.joda.time.DateTime()使用默认时区和年表为你提供一个使用当前日期/时间初始化的Joda时间对象。Joda还有许多其他替代方案,在此无法描述。(但请注意,有些人报告说Joda时间存在性能问题。例如,第一次使用Jodatime的LocalDateTime速度很慢。)
new org.joda.time.DateTime()
在Java中8,呼吁java.time.LocalDateTime.now()并java.time.ZonedDateTime.now()会给你申述1当前日期/时间。
java.time.LocalDateTime.now()
java.time.ZonedDateTime.now()
在Java 8之前,大多数了解这些事情的人都建议Joda-time拥有(到目前为止)最好的Java API来完成涉及时间点和持续时间计算的事情。
对于Java 8和更高版本,java.time建议使用标准软件包。现在,Joda时间被认为是“过时的”,Joda的维护者建议人们迁移。2。
java.time
1-请注意,LocalDateTime不包含时区。正如javadoc所说:“如果没有其他信息(例如偏移量或时区),它就无法在时间轴上表示时刻。”
2-注意:如果不迁移,你的Java 8代码不会中断,但是Joda代码库最终可能会停止获得错误修复和其他补丁。截至2020-02,尚未宣布Joda的正式“生命周期终止”,并且尚未将Joda API标记为已弃用。