我有var date_of_birth2:选项[java.sql.Date] =无。
稍后我必须用字符串填充date_of_birth2。
String date = "01/01/1990"
var formate = new SimpleDateFormat("dd/MM/yyyy").parse(date)
var aDate = new java.sql.Date(formate.getTime());
但是aDate只是java.sql.Date的类型。我怎么分配?
var mdate_of_birth2:Option [java.sql.Date] = date // date is String type
答案 0 :(得分:4)
而不是像@hezamu所建议的那样明确使用Some
,您可以在apply
随播广告上使用Option
方法,如下所示:
val maybeADate:Option[Date] = Option(aDate)
在这种情况下,如果aDate
为空,则Option
将是None
而不是Some(null)
,这将是不合需要的。
答案 1 :(得分:2)
由于如果存在格式错误,parse
方法会抛出异常,您可能还会考虑使用Try
将失败压缩到None
。
val aDate = Try(new SimpleDateFormat("dd/MM/yyyy").parse(date))
.map(d => new java.sql.Date(d.getTime()))
.toOption
如果您做希望它抛出异常,那么我会使用Option.apply
使用@ cmbaxter的回答。
答案 2 :(得分:1)
将其封装在Some
:
var mdate_of_birth2: Option[java.sql.Date] = Some(aDate)
您应该看看是否可以重构代码以使其成为val
。