Scala - 将带有时区的ISO 8601格式化字符串转换为时间戳

cup*_*dcb 1 timezone timestamp scala

给出的字符串:"2018-04-22T01:00:00-05:00"

所需格式:时间戳

代码来源:

import java.sql.Timestamp
import java.text.SimpleDateFormat

val dateStr : String = "2018-04-22T01:00:00-05:00"

val dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'")
val parsedDate = dateFormat.parse(dateStr)
val timestamp = new Timestamp(parsedDate.getTime)
Run Code Online (Sandbox Code Playgroud)

但得到错误:

[error] (run-main-12) java.text.ParseException: Unparseable date: "2018-04-22T01:00:00-05:00"
java.text.ParseException: Unparseable date: "2018-04-22T01:00:00-05:00"
    at java.text.DateFormat.parse(DateFormat.java:366)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
Run Code Online (Sandbox Code Playgroud)

注意:字符串中有一个"-05:00",导致错误.

Tom*_*Tom 7

看看SimpleDateFormat.

Z适用于格式化的时区-0800.

你需要X在你的模式中有时区字母(它不应该有引号):

"yyyy-MM-dd'T'hh:mm:ssX"

另外,hh是"上午/下午(1-12)的小时"我猜你想要HH吗?

"yyyy-MM-dd'T'HH:mm:ssX"