2009-09-06 11 views
8

現在、私は取得するには、次のコードを使用しています年、月、月、時、分Groovyでの日:の日のためにgetAt(Calendar.DAY_OF_MONTH)を使用してGroovyの/ Grailsの日付クラス - 月の取得日

Date now = new Date() 
Integer year = now.year + 1900 
Integer month = now.month + 1 
Integer day = now.getAt(Calendar.DAY_OF_MONTH) // inconsistent! 
Integer hour = now.hours 
Integer minute = now.minutes 
// Code that uses year, month, day, hour and minute goes here 

月はこの文脈では少し矛盾しているようです。月の日を入手するための方法はありますか?

+0

なぜあなたは今何年もやっていますか? –

+0

Mykola:新しいDate()。年は現在109であるため、1900を追加する必要があります。 – knorv

+0

しかし、なぜこれを「年」に追加して使用しないのですか? –

答えて

11

あなたのコードに以下を追加した場合、それは整数の日に月の日を割り当てる必要があります。ここでは、スタンドアローンだ

Integer day = now.date 

例:

def now = Date.parse("yyyy-MM-dd", "2009-09-15") 
assert 15 == now.date 
+0

ありがとう!どのように私はそれを逃すことができるか分からない! – knorv

+2

恐ろしいAPIのためにあなたがそれを逃したかもしれません! – Armand

7

これらの行はすべてゴミのようなものではありませんか? 次の2行は、コンソール

def date = new Date() 
def dayOfMonth = date.getAt(Calendar.DAY_OF_MONTH) 
+0

それは答えですか? – knorv

+0

このコードはgroovyshコンソールで私に6を与えます。それがあなたが望むものなら、これは答えです。 –

+1

問題は月の日を取得していないことです。問題は一貫した方法でそれをやっていることです。 – knorv

2

あなたはそれをやっている方法であなたの実際のコードではなく、これを使用するにはgroovysh

date = new Date() 
date.getAt(Calendar.DAY_OF_MONTH) 

で仕事をする唯一の方法です。 Javaの日付オブジェクトは月と日を格納しますが、指定された月の長さや月の何日などの情報は格納されません。あなたはこの情報の多くを見つけるためにCalendarクラスを使う必要があります。

1

このバージョンはかなり簡潔です:

Calendar.instance.get(Calendar.DAY_OF_MONTH) 
+1

ですが、他の行と絶対に比較してください。私はそれを行う一貫した方法を探していました。 – knorv

0

あなたはGroovyのようにDateから月のちょうど日を取得することができますこれは:

​Date date = new Date() 
int dayOfMonth = date[Calendar.DAY_OF_MONTH] 
関連する問題