0
儘管字符串對應於預定義的格式,但試圖從字符串中檢索星期幾,但有時會發生錯誤。解析日期字符串:一些正確格式化的字符串返回錯誤
下面是一個用來解析字符串和格式定義功能:
val dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
def getDayOfWeek(date: String): Int = {
val stringToParse = date.substring(0, 19)
try {
val now = Calendar.getInstance()
now.setTime(dateFormat.parse(stringToParse))
println("Correct time string: " + stringToParse)
now.get(Calendar.DAY_OF_WEEK)
} catch {
case _: Throwable => println("Wrong time string: " + stringToParse)
-1
}
}
下面是成功/失敗解析字符串的例子:
Correct time string: 2017-01-01 04:00:00
Wrong time string: 2017-05-04 15:00:00
Correct time string: 2017-01-01 04:00:00
Correct time string: 2017-06-13 07:00:00
Correct time string: 2017-05-04 15:00:00
Correct time string: 2017-01-01 04:00:00
Correct time string: 2017-01-01 04:00:00
Correct time string: 2017-01-01 04:00:00
Correct time string: 2017-01-01 04:00:00
Correct time string: 2017-05-04 15:00:00
Correct time string: 2017-06-13 07:00:00
Correct time string: 2017-05-04 15:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-06-13 07:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-06-13 07:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-01-01 05:00:00
Wrong time string: 2017-06-13 07:00:00
Correct time string: 2017-01-01 05:00:00
Correct time string: 2017-05-04 16:00:00
Correct time string: 2017-05-04 16:00:00
有誰知道什麼可能導致在上述情況下的錯誤?我沒有發現成功/不成功的例子之間的差異。
謝謝!
也許打印異常的錯誤消息可能會幫助您更具體地識別錯誤。 – stefanobaghino
我只能支持@stefanobaghino,因爲你正確解析「2017-06-13 07:00:00」以及錯誤地。 – Luftbaum
建議的另一個詞:捕獲'Throwable'通常是不可取的。您可能想查看下面記錄的'NonFatal'提取器:http://www.scala-lang.org/api/2.11.8/index.html#scala.util.control.NonFatal$ – stefanobaghino