Преобразование даты - PullRequest
       8

Преобразование даты

31 голосов
/ 21 марта 2011

У меня есть переменная даты

var date: Date = new Date()

, затем я преобразовал эту дату в строку:

var dateStr = date.toString()

теперь мне нужно преобразовать эту строку обратно в дату.Я пробовал оба:

1:

   var stringToDate: Date = date2Str.asInstanceOf[Date]

и 2:

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

Но в обоих случаях я получил ошибку:

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

Ответы [ 4 ]

52 голосов
/ 21 марта 2011

Я вижу пару проблем в вашем коде, но это прекрасно работает:

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
3 голосов
/ 06 июля 2018

Начиная с Scala 2.11, с таргетингом на Java 8, можно использовать API java.time Date 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

Обратите внимание, что:

  • Это частьстандартная библиотека (нет необходимости в сторонних зависимостях)
  • Это предназначено для замены старого java.util.Date / SimpleDateFormat api.
  • Это также должен заменить широко используемую библиотеку joda-time:

    Обратите внимание, что начиная с Java SE 8 и далее пользователям предлагается перейти на java.time (JSR-310) - aосновная часть JDK, которая заменяет этот проект.

  • И по ассоциации nscala-time , который является оберткой вокруг joda-time.

3 голосов
/ 08 июня 2013

с использованием nscala-time у меня сработало следующее:

import com.github.nscala_time.time._
import com.github.nscala_time.time.Imports._

val ysterday= (DateTime.now- 1.days).toString(StaticDateTimeFormat.forPattern("yyyyMMdd"))
3 голосов
/ 21 марта 2011

Ваша первая попытка должна дать вам ClassCastException, потому что вы не можете привести .aString к дате.вторая попытка, похоже, не использует правильный формат, который печатает Date.toString().Метод toString в java.utility.Date возвращает строку в формате, указанном в javadoc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...