now - Convertir datetime en fecha
formato fecha c# (7)
¿Has probado usando jodatime ? Hace que trabajar con fecha y hora en Java sea mucho más fácil.
¿Cómo convierto un campo de fecha y hora en Grails en una fecha, sin capturar el tiempo? Necesito hacer esto para comparar con la fecha del sistema.
class Trip
{
String name
String city
Date startDate
Date endDate
String purpose
String notes
static constraints = {
name(maxLength: 50, blank: false)
startDate(validator: {return (it >= new Date())}) // This won''t work as it compares the time as well
city(maxLength: 30, blank: false)
}
}
Desafortunadamente no hay un método "listo para usar" para realizar esta operación en Grails|Groovy|Java
.
Alguien siempre lanza Joda-Time cada vez que se plantea una pregunta java.util.Date
o java.util.Calendar
, pero incluir otra biblioteca no siempre es una opción.
Más recientemente, para un problema similar, creamos una clase DateTimeUtil
con métodos static
y algo como lo siguiente para obtener una Date
solamente:
class DateTimeUtil {
// ...
public static Date getToday() {
return setMidnight(new Date())
}
public static Date getTomorrow() {
return (getToday() + 1) as Date
}
public static Date setMidnight(Date theDate) {
Calendar cal = Calendar.getInstance()
cal.setTime(theDate)
cal.set(Calendar.HOUR_OF_DAY, 0)
cal.set(Calendar.MINUTE, 0)
cal.set(Calendar.SECOND, 0)
cal.set(Calendar.MILLISECOND, 0)
cal.getTime()
}
//...
}
Luego, en el validador, puedes usar
startDate(validator: {return (it.after(DateTimeUtil.today))}) //Groovy-ism - today implicitly invokes `getToday()`
Intente usar ''java.sql.Date'' not ''java.util.Date'' como un tipo de su propiedad Date junto con
formatDate
Propósito
Permite formatear instancias java.util.Date utilizando los mismos patrones definidos por la clase SimpleDateFormat.
Ejemplos
Descripción
Atributos
* format (required) - The format to use for the date
* date (required) - The date object to format
Lo descifré:
startDate (validator: {return (it> = new Date () - 1)})
Fue así de simple ;-)
Para cambiar la vista en la página GSP:
<g:datePicker name="startDate" value="${trip?.startDate}" years="${years}" precision="day" />
Gracias a todos por la contribución
Mejor uso del plugin de calendario en Grails.
Deberías usar startdate.clearTime()
Hacemos esto sobrescribiendo al colocador para nuestras clases de dominio que solo necesitan la fecha y no la hora. De esta forma, podemos comparar las fechas de dos instancias sin tener que hacer esto más tarde. :
def setStartDate( Date date ) {
date.clearTime()
startDate = date
}
Tal vez
startDate(validator: {d = new Date(); return (it..d) >= 0})