2012-11-12 79 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

相關問題