gpt4 book ai didi

hadoop - 将字符串转换为时间戳配置单元

转载 作者:可可西里 更新时间:2023-11-01 15:01:31 26 4
gpt4 key购买 nike

我有带有时间戳值的字符串,例如“2013-02-02T04:04:11.240-4:00”。

所以目标是转换成像 2013-02-02 04:04:11 这样的时间戳格式。我该怎么做。

这个命令工作正常

from_unixtime(unix_timestamp(substr('20130502081559999',1,14), 'yyyyMMddHHmmss'))

但是当我尝试这样的事情时,它给出了“T”的错误

from_unixtime(unix_timestamp(substr('2013-05-02T08:15:59.999-4:00',1,19), 'yyyy-MM-ddTHH:mm:ss'))

最佳答案

对于字符串中除时区偏移之外的所有内容,此模式都适用:

from_unixtime(unix_timestamp("2013-02-02T04:04:11.240", "yyyy-MM-dd'T'HH:mm:ss.SSS"))

SimpleDateFormat 的模式是 here .

额外的模式 XXX 应该处理您的时区偏移。但如 this page 所述和 this page ,X 模式是在 Java 7 中引入的。

如果您运行的是早期版本的 Java(像我一样 - 我的 Cloudera QuickStart VM 使用 1.6.0_32),则必须进行一些额外的操作才能使其正常工作。一种方法是:

from_unixtime(unix_timestamp( 
regexp_replace(
regexp_replace("2013-02-02T04:04:11.240-4:00", "(.*):(.{2})$", "$1$2"),
"(.*)-(.{3})$", "$1-0$2"),
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"))

最里面的 regexp_replace 从时区偏移量中去除冒号 (:)。如果需要,最外面的 regexp_replace 会用额外的零填充时区偏移量(即 -4:00 变为 -0400,这与 Z 模式匹配。请注意 -400 与 Z 模式不匹配)。

关于hadoop - 将字符串转换为时间戳配置单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19369608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com