JodaTime:如何从 LocalTime 获取 "HH:mm Z" 格式的字符串表示形式

JodaTime: How to get a String representation in the format "HH:mm Z" from a LocalTime

假设我们有一个 Joda LocalTime 并且想要显示它的小时和分钟以及时区,怎么办?

实际上这行不通:

 val chronology= ISOChronology.getInstance(DateTimeZone.forTimeZone(TimeZone.getTimeZone("America/St_Vincent")))
 val localTime = LocalTime(12, 45, 0, 0, chronology)
 val string = localTime.toString("HH:mm Z") // returns "12:45 ", expected "12:45 -4"

根据定义,当地时间没有附加时区。但是 Chronology 不是时区,它是人们衡量时间的方式(如中国年或佛教年)。您可以在代码中省略它,结果将与 ISOChronology 相同(我们在 "Western Culture" 中测量时间的方式)是默认值。

您需要将其转换为分区日期时间:

fun main(args: Array<String>) {
    val localTime = LocalTime(12, 45, 0, 0)
    val string = localTime
            .toDateTimeToday(
                    DateTimeZone.forTimeZone(TimeZone.getTimeZone("America/St_Vincent"))
            )
            .toString("HH:mm Z")

    println(string)
}

结果是:12:45 -0400