在 Java 中快速获取当前日历对象的方法

Fast way to get the current Calendar object in Java

给定一个需要在每次调用时使用当前 day/month/year 的值并且每​​秒被调用数次(数百万次或更多次)的方法,是否有更快的方法来实现该功能,其他比在每次调用时为当前时间创建一个 Calendar 对象?

使用 Calendar.getInstance()calendar.setTime()(需要重新计算时间字段)每秒执行多次操作成本过高。

标准 Java 解决方案更可取(例如,优于使用第三方库)。

使用日期,而不是日历 class 它将为您提供当前日期

要获取当前 date/time,我发现 LocalDate.now()Calendar.getInstance() 快。 LocalDate class 可以在 java.time 包中找到,这是自 Java 8 以来新增的(当然,如果你想保持与旧 Java 版本的兼容性,那可能不是一个选项)。

标准 java(无第 3 方库)范围内的最佳解决方案是使用 class LocalDate。到目前为止,这个答案与@Chronio 的答案相同,但我在使用上有所不同。工厂方法 now() 不能这么快,因为它利用了系统时区 - 甚至可能在 TimeZone.getDefault().

深度的任何地方使用同步方法

但是 class LocalDate 如果您使用带有年、月和月日参数的工厂方法,则速度非常快。在这里,您只是设置州成员,没有任何时区计算,也没有任何公历数学计算(好吧,只涉及快速的依赖于年份的月长检查)。直接看源码。