2009-09-06 100 views
8

Actualmente estoy usando el siguiente código para obtener el año, mes, día del mes, la hora y los minutos en Groovy:Groovy/Grails clase fecha - día del mes conseguir

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 

Usando getAt(Calendar.DAY_OF_MONTH) para el día de el mes parece un poco inconsistente en este contexto. ¿Hay alguna forma más corta de obtener el día del mes?

+0

¿Por qué estás haciendo ahora.año + 1900? –

+0

Mykola: new Date(). Year is currently 109, de ahí la necesidad de agregar 1900. – knorv

+0

¿Pero por qué agrega esto a algún 'año' y no lo usa? –

Respuesta

11

si se añade lo siguiente a su código debe asignar el día del mes para el día entero:

Integer day = now.date 

Aquí es un stand-alone ejemplo:

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

¡Gracias! ¡No sé cómo podría extrañarlo! – knorv

+2

¡Quizás te lo perdiste por la horrible API! – Armand

7

¿No es que todas esas líneas son una especie de basura? Las siguientes dos líneas hacen el trabajo en una groovysh

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

Para utilizar esto en su código real y no en la consola

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

¿Es esa una respuesta? – knorv

+0

Este código me da 6 en la consola groovysh. Si es lo que quieres, esta es la respuesta. –

+1

El problema no es obtener el día del mes. El problema es hacerlo de una manera consistente. – knorv

2

La forma en que lo está haciendo es la única manera. El objeto de fecha java almacena el mes y el día, pero no almacena ninguna información, como por ejemplo, cuánto dura el mes determinado o qué día del mes está activo. Necesitas usar la clase Calendar para encontrar mucha información.

1

Esta versión es bastante escueta:

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

Absolutamente, pero compárelo con las otras líneas. Estaba buscando una forma consistente de hacerlo. – knorv

0

Usted puede obtener sólo el día del mes de una Date en Groovy como esto:

​Date date = new Date() 
int dayOfMonth = date[Calendar.DAY_OF_MONTH] 
Cuestiones relacionadas