sort query datefromstring scala date

scala - query - order mongodb find



Conversión de fecha (4)

Tengo una variable de fecha

var date: Date = new Date()

luego he convertido esta fecha a String:

var dateStr = date.toString()

ahora necesito convertir esta cadena a la fecha. He intentado ambos:

1:

var stringToDate: Date = date2Str.asInstanceOf[Date]

y 2:

stringToDate: Date = new SimpleDateFormat("dd.MM.yyyy").parse(dateStr);

Pero en ambos casos, recibí el error:

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date


Al iniciar Scala 2.11 , orientado a Java 8 , se puede utilizar la API de fecha y hora de java.time :

import java.time.LocalDate import java.time.format.DateTimeFormatter val dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy") LocalDate.now().format(dtf) // "06-07-2018" LocalDate.parse("06-07-2018", dtf) // java.time.LocalDate = 2018-07-06

Tenga en cuenta que:

  • Esto es parte de la biblioteca estándar (sin necesidad de dependencias de terceros)
  • Esto está destinado a reemplazar la antigua java.util.Date / SimpleDateFormat api.
  • También se supone que esto reemplaza a la biblioteca joda-time ampliamente utilizada:

    Tenga en cuenta que desde Java SE 8 en adelante, los usuarios deben migrar a java.time (JSR-310), una parte central del JDK que reemplaza este proyecto.

  • Y por asociación nscala-time que es un envoltorio alrededor de joda-time .


Su primer intento debería darle una ClassCastException porque no puede cast.aString a una fecha. El segundo intento no parece estar usando el formato correcto que Date.toString() imprime. El método toString de java.utility.Date devuelve una cadena en el formato especificado en el javadoc.


Veo un par de problemas en su código, pero esto funciona bien:

scala> val format = new java.text.SimpleDateFormat("dd-MM-yyyy") format: java.text.SimpleDateFormat = java.text.SimpleDateFormat@9586200 scala> format.format(new java.util.Date()) res4: java.lang.String = 21-03-2011 scala> format.parse("21-03-2011") res5: java.util.Date = Mon Mar 21 00:00:00 CET 2011


usando nscala-time lo siguiente me funcionó:

import com.github.nscala_time.time._ import com.github.nscala_time.time.Imports._ val ysterday= (DateTime.now- 1.days).toString(StaticDateTimeFormat.forPattern("yyyyMMdd"))