当尝试将DateUtils.getRelativeTimeSpanString(...)
与某些特定值一起使用时,我遇到一个相当奇怪的问题。
我正在这样使用它:
private fun formatPubDate(pubDate: String): String {
val dateFormat = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH)
val date = dateFormat.parse(pubDate)
val flags = DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_YEAR or DateUtils.FORMAT_ABBREV_MONTH
return DateUtils.getRelativeTimeSpanString(date.time, System.currentTimeMillis(),
DateUtils.MINUTE_IN_MILLIS, flags).toString()
}
为什么奇怪?由于以下代码可以正常工作,因此请在控制台“ 6天前”上打印:
Log.d("DATE_TAG", formatPubDate("Fri, 09 Jul 2018 07:04:05 +0000"))
但是,如果日期从7月9日更改为7月8日:
Log.d("DATE_TAG", formatPubDate("Fri, 08 Jul 2018 07:04:05 +0000"))
然后应用程序崩溃,但出现以下异常:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ContentResolver android.content.Context.getContentResolver()' on a null object reference
at android.text.format.DateFormat.is24HourFormat(DateFormat.java:131)
at android.text.format.DateUtils.formatDateRange(DateUtils.java:822)
at android.text.format.DateUtils.formatDateRange(DateUtils.java:650)
at android.text.format.DateUtils.formatDateRange(DateUtils.java:627)
at android.text.format.DateUtils.getRelativeTimeSpanString(DateUtils.java:350)
at test.com.recyclerviewwidth.MainActivity.formatPubDate(MainActivity.kt:26)
at test.com.recyclerviewwidth.MainActivity.onCreate(MainActivity.kt:18)
到目前为止,该问题仅在Android 5,三星设备和仿真器上可重现(在Android 8和7上运行正常)。
有人知道这里可能有什么问题吗?
答案 0 :(得分:0)
问题来自于FORMAT_SHOW_TIME标志:我在这里有相同的pb,并通过捕获异常并再次调用DateUtil方法而没有FORMAT_SHOW_TIME标志,以某种肮脏的方式对其进行了修复 / strong>。