我有一个日期变量
var date: Date = new Date()
然后我将这个日期转换为String:
var dateStr = date.toString()
现在我需要将此String转换回日期。 我试过了两个:
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
答案 0 :(得分:50)
我在你的代码中看到了一些问题,但这很好用:
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
答案 1 :(得分:3)
你的第一次尝试应该给你一个ClassCastException,因为你不能将.astring转换为Date。第二次尝试似乎没有使用Date.toString()
打印的正确格式。 java.utility.Date的toString方法以javadoc中指定的格式返回一个String。
答案 2 :(得分:3)
使用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 :(得分:3)
从Scala 2.11
开始,以Java 8
为目标,可以使用java.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。这也是supposed to replace个广泛使用的joda-time
库:
请注意,从Java SE 8开始,要求用户迁移到java.time(JSR-310),这是JDK的核心部分,它代替了此项目。
并通过关联nscala-time来封装joda-time
。