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
假设我们有一个 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