如何使用偏移量解析日期时间

时间:2018-04-25 16:12:09

标签: java android datetime kotlin

日期时间字符串,如" 2018-04-01 10:00:00"可用于使用此Kotlin代码创建Date对象:

val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val d : Date = format.parse("2018-04-01 10:00:00")   // works fine

但是如何用这样的偏移量解析日期时间字符串:

2018-04-01 10:00:00+02       // GMT + 2 hours
2018-04-01 10:00:00+02:30    // GMT + 2 hours, 30 minutes
2018-04-01 10:00:00+0230     // GMT + 2 hours, 30 minutes

Java 8:Instant不是一个选项。

编辑:

我已经尝试了这个建议并使用了' x' X'' z'和' Z',' XXX'有和没有领先空间。编译好。实例化SimpleDateFormat时x版本崩溃 - 似乎在使用的android api级别中不受支持:

// java.lang.IllegalArgumentException: Unknown pattern character 'X'
var formatter3 = SimpleDateFormat("yyyy-MM-dd HH:mm:ssX")

// java.lang.IllegalArgumentException: Unknown pattern character 'x'
var formatter4 = SimpleDateFormat("yyyy-MM-dd HH:mm:ssx")

// java.lang.IllegalArgumentException: Unknown pattern character 'x'
var formatter5 = SimpleDateFormat("yyyy-MM-dd HH:mm:ss x")

z版本:

val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ")
or
val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ssz")
val date = formatter.parse("2018-04-24 17:33:02+02")

似乎有效。

@Andreas:日期时间解析是一个痛苦的屁股。而不是低估问题,一行简单的代码会更有帮助

1 个答案:

答案 0 :(得分:0)

可以使用Z(RFC 822)或X(ISO 8601)解析时区,请参阅https://developer.android.com/reference/java/text/SimpleDateFormat