2012-11-12 82 views
1

在Groovy中,有一些捷径用于查找Date对象的各种常用变量,如下面列出的那些。如何从groovy中的日期中提取一年的日期

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 

获得今年的一天的快捷方式是什么?

回答

3

这个问题的简短答案是“没有捷径”,但长答案增加了“...但你可以做出一个!”

无需做任何修改,你可以从一个日期对象用下面的代码访问年的一天:

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 
如何与 ExpandoMetaClass添加属性

更多信息,Groovy的文档在找到

+0

+1问一个问题,并回来回答它! – WilliamShatner

+0

你也可以使用calendar.instance:'Calendar.instance [Calendar.DAY_OF_YEAR]' – bitsnaps

1

这个答案与现在不相关,但是Java 8被设置为包含JSR-310,这是日期和时间的更好实现/表示。

你可以看到该功能在Java 8个功能list

在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(); 

这应该顺藤摸瓜,并从Milestone 6玩耍来提供爪哇人8. 里程碑6集31/01/2013

相关问题