在 Groovy 中,有一些快捷方式可用于查找 Date 对象的各种公共变量,如下所示。
Date now = new Date()
Integer year = now.year + 1900
Integer month = now.month + 1
Integer day = now.date
Integer hour = now.hours
Integer minute = now.minutes
获取年份的捷径是什么?
这个问题的简短答案是“没有捷径”,但长答案添加了“......但你可以做一个!”
无需任何修改,您可以使用以下代码从日期对象访问一年中的某一天:
Date now = new Date()
Integer dayOfYear = now[Calendar.DAY_OF_YEAR]
但是,如果您的代码将频繁访问该变量,您可以修改Date
类以直接使用ExpandoMetaClass
以下方法添加该属性:
Date.metaClass.getDayOfYear << { -> delegate[Calendar.DAY_OF_YEAR]}
Date now = new Date()
assert now[Calendar.DAY_OF_YEAR] == now.dayOfYear
有关如何添加属性的更多信息,请参见 http://www.groovy-lang.org/metaprogramming.html#metaprogramming_emcExpandoMetaClass
的 Groovy 文档
这个答案暂时不相关,但 Java 8 设置为包含 JSR-310,这是一个更好的日期和时间实现/表示。
您可以在 java 8 功能列表中看到该功能
在 Java 8 中,您将拥有表示日期的新对象。最相似的一个日期是LocalDateTime
以下是如何在 Java 中完成此操作的示例(当然,Groovy 更容易):
LocalDateTime now = LocalDateTime.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
int hour = now.getHour();
int minute = now.getMinute();
// your answer
int dayOfYear = now.getDayOfYear();
这应该可以从 Java 8 的里程碑6开始摆弄和玩耍。里程碑 6 设置为 2013 年 1 月 31 日