web-dev-qa-db-ja.com

日付変換

日付変数があります

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
32
Echo

あなたのコードにはいくつかの問題がありますが、これはうまくいきます:

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
53

日付にcast.aStringをキャストできないため、最初の試行でClassCastExceptionが発生します。 2回目の試行では、 Date.toString() が出力される正しい形式を使用していないようです。 Java.utility.DateのtoStringメソッドは、javadocで指定された形式の文字列を返します。

3
krock

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
CruncherBigData

Scala 2.11を開始し、Java 8をターゲットとして、Java.time Date Time APIを使用できます。

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)-このプロジェクトを置き換えるJDKのコア部分に移行するように求められます。

  • そして、関連付けによって nscala-time これはjoda-timeのラッパーです。

3
Xavier Guihot