为了账号安全,请及时绑定邮箱和手机立即绑定

Android中使用泰历解析特定格式的日期

Android中使用泰历解析特定格式的日期

largeQ 2023-12-13 16:34:39
对于 Android 应用程序,我需要解析泰国本地格式的日期(例如,2019 年应返回为 2562)。我不明白我该怎么做。目前用于SimpleDateFormatter解析默认本地格式的日期。fun adjustTimePattern(dateString: String, oldPattern: String, newPattern: String): String? {    val dateFormat = SimpleDateFormat(oldPattern, Locale.getDefault())    dateFormat.timeZone = TimeZone.getTimeZone("UTC")    return try {        val calendar = Calendar.getInstance()        calendar.time = dateFormat.parse(dateString)        val newFormat = SimpleDateFormat(newPattern, Locale.getDefault())        newFormat.format(calendar.time)    } catch (e: ParseException) {        return null    }}尝试对 locale 的值进行硬编码(使用Locale("th", "TH")而不是Locale.getDefault()),但很幸运,因为 SimpleDateFormat 类使用公历本身。也尝试过使用LocalDate& DateTimeFormatter,但年份值无论如何都不会改变。fun formatTime(pattern: String): String {    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {        val formatter = DateTimeFormatter.ofPattern(pattern, Locale("th", "TH"))        LocalDate.now().format(formatter)    } else {        ""    }}.谁能帮我解决这个问题吗?
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

ThaiBuddhistDate班级

您可以使用 ajava.time.chrono.ThaiBuddhistDate来完成此操作,请参阅以下示例:

public static void main(String[] args) throws ParseException {
    ThaiBuddhistDate tbd = ThaiBuddhistDate.now(ZoneId.systemDefault());
    System.out.println(tbd.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
}

我在系统上得到的输出是

2562-10-24

大多数java.time功能在ThreeTen-Backport项目 中向后移植到 Java 6 和 Java 7 。在ThreeTenABP中进一步适应了早期的 Android (<26) 。

查看完整回答
反对 回复 2023-12-13
?
慕的地10843

TA贡献1785条经验 获得超8个赞

因为您已经在使用java.util.Calendar和java.text.SimpleDateFormat。


如果您可以在实例化日历时更改区域设置,那么这应该可行:


val thaiCalendar = Calendar.getInstance(Locale("th", "TH"))

println(thaiCalendar.get(Calendar.YEAR)) // prints 2562

但是,如果您只想更改格式,这对我有用:


val notThaiCalendar = Calendar.getInstance()

val thaiFormatter = SimpleDateFormat("yyyy-MM-dd", Locale("th", "TH"))

println(thaiFormatter.format(notThaiCalendar.time)) // prints 2562-10-24

编辑


此解决方案未在 Android 上测试


查看完整回答
反对 回复 2023-12-13
  • 2 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信