使用getBestDateTimePattern()
android.text.format
包中的DateFormat.getBestDateTimePattern()
会根据用户设置的语言环境创建最佳的日期和时间格式。
例如:骨架EEEE,MMM d,YYYY,jj:mm
返回本地化的日期和时间如下所示。
Locale English (India): Monday 9 Sep 2019, 9:33 PM
Locale English (United States): Monday, Sep 9, 2019, 9:33 PM
Locale español (Estados Unidos): lunes, 9 de sep. de 2019 9:33 PM
Locale español (México): lunes, 9 de sep de 2019 21:33
Locale français (France): lundi 9 sept. 2019 à 21:33
Locale português (Brasil): segunda-feira, 9 de set de 2019 21:33
并且对于不同的区域设置也是如此。它还尊重区域设置的12小时或24小时时间格式。
如果要自定义您自己的骨架,请参考unicode.org上的UTS #35模式。
示例代码
以下是在Kotlin中测试的示例代码:
val skeleton = DateFormat.getBestDateTimePattern(Locale.getDefault(), "EEEE, MMM d, YYYY, jj:mm")
val formatter = SimpleDateFormat(skeleton, Locale.getDefault()).apply {
timeZone = TimeZone.getDefault()
applyLocalizedPattern(skeleton)
}
val dateTimeText = formatter.format(calendar.time)
Log.d("YourClass", "Locale ${Locale.getDefault().displayName}: $dateTimeText")
除了Calendar
类,您还可以使用ZonedDateTime
。只需将其转换为Date
对象并将其提供给format()
。
例如:Date(zonedDateTime.toInstant().toEpochMilli())
希望这能帮到您。