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"))