我正在尝试使用SimpleDateFormat
解析日期字符串,该字符串永远不会停止,也不会给出任何异常。请参见下面的代码,
fun getDate(dateStr: String) {
try {
/** DEBUG dateStr = '2006-04-16T04:00:00Z' **/
val formatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
val mDate = formatter.parse(dateStr) // this never ends while debugging
} catch (e: Exception){
Logger.e("Error $e") // this never gets called either
}
}
可能是什么问题?
注意:我正在使用
Android Studio:3.4.1,Kotlin版本:1.3.31,Min SDK:23,Target SDK:28,Compile SDK:28
答案 0 :(得分:1)
使用以下功能
fun getDate(dateStr: String) {
try {
/** DEBUG dateStr = '2006-04-16T04:00:00Z' **/
val formatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH)
val mDate = formatter.parse(dateStr) // this never ends while debugging
Log.e("mDate", mDate.toString())
} catch (e: Exception){
Log.e("mDate",e.toString()) // this never gets called either
}
}
答案 1 :(得分:0)
您的日期格式不正确。应该如下图所示
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
请注意,将'
括在Z中。您在日期格式中丢失了它。
答案 2 :(得分:0)
我遇到了类似的问题,我的问题是我导入了错误的 ParseException。您需要确保您正在导入 java.text 解析异常。
检查文件顶部的导入代码。
正确的解析异常
import java.text.ParseException
INCORRECT ParseException
import android.net.ParseException //Android example
您的日期格式也没有对齐,所以当然也需要修复。但理想情况下,如果日期字符串错误,您希望 try/catch 块阻止程序崩溃,因此最好使用错误数据对其进行测试。
答案 3 :(得分:0)
这里的时区实际上使用的是 ISO 8601 格式。 要通过 Java SimpleDateFormat 正确解析它,您应该使用以下模式: "yyyy-MM-dd'T'HH:mm:ssX"
这里的 X 表示 ISO 8601 格式的时区。 见https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html