提问人:oTwo 提问时间:9/5/2023 最后编辑:AnonymousoTwo 更新时间:9/5/2023 访问量:116
特定 Android 设备中的 SimpleDateFormat 字符串解析问题 [重复]
SimpleDateFormat string parsing issue in a Specific Android Device [duplicate]
问:
我有一个已发布的 android 应用程序,并且特定设备出现了一个奇怪的问题。在分析 Crashlytics 数据时,我发现该应用程序因以下原因而崩溃:
val time1 = SimpleDateFormat("MMM dd yyyy HH:mm:ss",Locale.getDefault()).parse(dateString)
其中 dateString 为“Sep 6 2023 14:00:00”
报告的确切错误问题是
由 java.text.ParseException 引起 不可解析的日期:“Sep 6 2023 14:00:00”
我以前在其他设备上没有遇到过这个问题。该设备的具体情况如下:
装置 品牌:小米 型号:Redmi Note 10 Pro 方向:纵向 可用内存:1.88 GB 可用磁盘:2.48 GB 操作系统 版本:Android 13 方向:纵向 已扎根:否 崩溃 日期:Sep 5, 2023, 4:19:40 PM 应用版本:6.1.2 (54)
附加输入:
它也会失败
deteString:“2023 年 9 月 15 日 24:00:00”
所以问题不在于 d 或 dd
答:
-1赞
Sohaib Ahmed
9/5/2023
#1
您的日期是单字符的,例如“Sep 6 2023 14:00:00”中的“6”
尝试格式“MMM d yyyy HH:mm:ss”,如下所示:
val pattern = SimpleDateFormat("MMM d yyyy HH:mm:ss", Locale.getDefault())
val time1 = pattern.parse(dateString)
或将单个字符的日期生成更新为“06”
评论
0赞
oTwo
9/5/2023
我是这样想的。挑战在于,我需要一些时间才能意识到这是否有效。知道为什么其他设备不会发生这种情况吗?
1赞
oTwo
9/5/2023
问题仍然存在,“Sep 15 2023 24:00:00”。所以问题不在于 d 或 dd。同一台设备
0赞
Anonymous
9/6/2023
在我的电脑上,我仍然得到.很抱歉,恐怕你的回答无济于事。我觉得这没问题,因为帮助用户如何使用早已过时且臭名昭著的麻烦确实对他们不利。每个人都最好切换到 java.time,即现代的 Java 日期和时间 API。ParseException: Unparseable date: "Sep 6 2023 14:00:00"
SimpleDatFormat
0赞
Sohaib Ahmed
9/7/2023
恐怕,这对你不起作用。它是否在所有时间都抛出任何日期的异常?还是针对特定字符串?
0赞
Anonymous
9/10/2023
使用你的代码,我得到了所有的 和 .有关正确解决方案,请参阅链接的原始问题及其答案。ParseException
Sep 6 2023 14:00:00
Sep 06 2023 14:00:00
Sep 26 2023 14:00:00
评论
SimpleDateFormat
Sep
Sep
LocalDateTime.parse("Sep 15 2023 24:00:00", DateTimeFormatter.ofPattern("MMM d uuuu HH:mm:ss", Locale.ROOT))
2023-09-16T00:00
Locale.getDefault()
Locale.getDefault()
Locale.ENGLISH
Locale.ROOT
java.util.Date
java.time.Instant