Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala:尝试不同的日格式_Scala - Fatal编程技术网

Scala:尝试不同的日格式

Scala:尝试不同的日格式,scala,Scala,使用不同的日期格式解析字符串的scala、优雅、实用的方法是什么 假设我有 val formats = Set( new SimpleDateFormat("YYYY-MM-dd"), new SimpleDateFormat("MM/DD/YYYY") ) 我想尝试使用这些格式中的第一种来解析字符串,这将成功解析: def parse(s:String): Option[Date] = { formats.map {??????????????} } 您可以将列表转换为一个流(

使用不同的日期格式解析字符串的scala、优雅、实用的方法是什么

假设我有

val formats = Set(
  new SimpleDateFormat("YYYY-MM-dd"),
  new SimpleDateFormat("MM/DD/YYYY")
)
我想尝试使用这些格式中的第一种来解析字符串,这将成功解析:

def parse(s:String): Option[Date] = {
  formats.map {??????????????}
}

您可以将列表转换为一个流(以确保仅完成最小数量的解析尝试),然后使用
Try
collectFirst

def parse(s:String): Option[Date] = {
  formats.toStream.map(f => Try(f.parse(s))).collectFirst {
    case Success(d) => d
  }
}

println(parse("2017-02-01"))  // Some(Sun Jan 01 00:00:00 IST 2017)
println(parse("02/01/2017"))  // Some(Sun Jan 01 00:00:00 IST 2017)
println(parse("23:00"))  // None

您可以为不同的格式创建正则表达式,然后对它们进行匹配。看这里:太好了!非常感谢。
.view
难道不是创建流的更好选择吗?哦,绝对是!