日付変数があります
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
あなたのコードにはいくつかの問題がありますが、これはうまくいきます:
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
日付にcast.aStringをキャストできないため、最初の試行でClassCastExceptionが発生します。 2回目の試行では、 Date.toString()
が出力される正しい形式を使用していないようです。 Java.utility.DateのtoStringメソッドは、javadocで指定された形式の文字列を返します。
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"))
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
のラッパーです。