我有一个如下所示的数据类:
data class MyData (val myNumber : String,
var myDate : Date?) : Serializable
当我设置日期时,我使用格式化程序,如下所示:
val cal = Calendar.getInstance()
cal.timeZone = TimeZone.getTimeZone("America/New_York")
cal.set(year.toInt(), monthNumber, day.toInt())
myDate = cal.time
我在SharedPreferences中存储了一个这样的数组,然后像这样加载它:
private fun GetMyDataArray(): ArrayList<MyData>? {
val json = sharedPrefs!!.getString(STORED_DATA_KEY, "")
val caseType = object : TypeToken<ArrayList<MyData>>() {}.type
return Gson().fromJson<ArrayList<MyData>>(json, caseType)
}
99%的情况下,这种工作正常,但在一些用户的设备上它崩溃了:
java.lang.NumberFormatException Invalid number: Mar
Failed to parse date ["Mar 21, 2018 08:01:23']: Invalid number: Mar
com.google.gson.internal.bind.util.ISO8601Utils.parse
为什么在某些设备上这种方法可以正常工作,而其他设备却没有?
可能是由于用户区域设置?如果是这样,我该如何解决? (我的大部分用户都在美国,但有些人在印度和欧洲)
任何指示赞赏,谢谢!