如何将时间戳字符串转换为另一个时区的时间戳

测试acc

我有一个 UTC 时间戳字符串

val x = "2018-09-26T15:05:19.1121042Z"

我想要一个这样的函数来将它转换为 CST 时区中的时间戳对象。

def StringToTimeStamp(str: String): Timestamp = {
  val timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
  val timeZone = TimeZone.getTimeZone("America/Chicago")
  timeFormat.setTimeZone(timeZone);
  val now = timeFormat.format(str)
  val ts = java.sql.Timestamp.valueOf(now)
  ts
}

但是,我不知道SimpleDateFormat我的字符串格式,因为我不能输入像 T/Z 这样的字母,因为它们出现在我的字符串中x我将如何做到这一点?

罗勒酒

祖鲁时间

Z您的输入字符串的结束意味着UTC,发音为“祖鲁”。

ISO 8601

您的输入字符串采用标准ISO 8601格式。java.time类解析或生成字符串时,在默认情况下使用这些标准格式。

Instant

将您的字符串解析为Instant. Instant 表示 UTC 中的一个时刻,分辨率为纳秒。

Instant instant = Instant.parse("2018-09-26T15:05:19.1121042Z") ;

您的 JDBC 驱动程序可能能够接受Instant

myPreparedStatement.setObject( … , instant ) ;

OffsetDateTime

如果没有,您的 JDBC 4.2 或更高版本的驱动程序需要接受OffsetDateTime.

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
myPreparedStatement.setObject( … , odt ) ;

避免 java.sql.Timestamp

如果您使用JDBC 4.2之前的JDBC 驱动程序,则回退到使用可怕的. 但是只有在绝对必要时才使用这些遗留的日期时间类,因为它们非常混乱。java.sql.Timestamp

您可以通过调用添加到旧类的新转换方法在现代类和遗留类之间进行转换。

java.sql.Timestamp ts = java.sql.Timestamp.from( instant ) ;

…和…

Instant instant = ts.toInstant() ;

时区

大概你问的是java.sql.Timestamp因为你正在与数据库交换值。

所在的芝加哥时区与数据库工作无关,因为大多数数据库都以 UTC 时间存储。

ZonedDateTime

但是为了向用户展示,您可能需要从 UTC 调整到时区。

ZoneId z = ZoneId.of( "America/Chicago" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;

生成本地化格式的字符串

DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( Locale.US ) ;
String output = zdt.format( f ) ;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:如何将日期时间/时间戳从一个时区转换为另一个时区?

如何将时间戳转换为字符串(不更改时区)?

如何将未知时区的字符串datetime转换为python中的时间戳

如何将多个日期格式的字符串转换为时区格式的时间戳

如何将 ORACLE 日期和时间戳类型转换为带时区的字符串?

如何将时间戳转换为字符串

用另一个命令的返回值替换bash命令输出中的子字符串(例如,将时间戳转换为日期)

如何将带有时区的字符串转换为Unix时间戳Python?

如何将时间字符串转换为时间戳

如何将时间戳字符串转换为纪元时间?

如何将带有时区的奇怪日期时间字符串转换为时间戳(PySpark)

如何将代表日期的字符串转换为正确的FireStore时间戳字段?

如何将时间戳字符串转换为java.util.Date

如何将时间戳转换为字符串以保存数字?

Apache Hive:如何将字符串转换为时间戳?

如何将字符串转换为时间戳以进行比较?

如何将时间戳字符串转换为毫秒整数

如何将 Athena 时间戳转换为字符串

如何将字符串转换为时间戳

如何将UTC时间戳字符串转换为pandas datetime?

如何将时间戳转换为日期字符串?

如何将字典条目从字符串转换为 pyspark 中的时间戳?

如何将字符串转换为时间戳

将字符串时间转换为日期时间戳

如何将包含时区的时间戳 varchar 转换为时间戳类型

将rfc3339字符串转换为带时区的时间戳

将日期值(字符串)转换为具有不同时区的时间戳

如何在所需的时区中将字符串转换为时间戳

将时间从一个时区转换为另一个时区