在Java中将ISO 8601时间戳字符串转换为纪元秒[重复]

Posted

技术标签:

【中文标题】在Java中将ISO 8601时间戳字符串转换为纪元秒[重复]【英文标题】:Convert ISO 8601 timestamp string to epoch seconds in Java [duplicate] 【发布时间】:2021-01-19 14:38:24 【问题描述】:

我收到了一个 ISO 8601 日期时间格式的字符串 2020-11-03T15:23:24.388Z。在 Java 中将其转换为纪元秒的最佳方法是什么?

【问题讨论】:

旁注:如果您以纪元秒为单位进行转换,那么毫秒部分将被排除在外。 @ArvindKumarAvinash 我对自己没有找到更好的匹配原始问题感到失望。他们一定在那里,不是吗?尽管如此,我发现作为一个包含一些问题的链接的副本关闭比作为没有任何链接的不费力的要求转储关闭更有帮助,尽管你可能会争辩说后者会更正确。 还有@ArvindKumarAvinash,一定要挑战我。我认为原件和复制品的问题高度依赖于意见。不接受挑战的大师——感谢你的好话——不可能是真正的大师。没有人每次都能做出正确的判断。 Hoya Coder,我相信我们应该在讨论您的问题是否重复之前说一下:按照 Stack Overflow 标准,这是一个糟糕的问题。是的,我们很挑剔,我希望你能原谅我是直接的。您应该先搜索答案,而且您找到答案的速度可能比我们编写新答案的速度还要快。在询问时,您应该报告您的搜索结果以及它如何未能回答您的问题,或者更准确地说您仍然缺少什么。请再次通过How do I ask a good question?。 @ArvindKumarAvinash 我想我发现了一些更有用的先前问题,因此我编辑了原始列表。感谢您对我施加了轻微的压力。 【参考方案1】:

使用modern date-time API,可以如下图所示:

import java.time.Instant;

public class Main 
    public static void main(String[] args) 
        Instant instant = Instant.parse("2020-11-03T15:23:24.388Z");
        long seconds = instant.getEpochSecond();
        System.out.println(seconds);
    

输出:

1604417004

如果您正在为您的 android 项目执行此操作,并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。

通过 Trail: Date Time 了解有关现代日期时间 API 的更多信息。

【讨论】:

以上是关于在Java中将ISO 8601时间戳字符串转换为纪元秒[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中将 UTC 时间戳转换为 ISO 8601

如何使用 Shell 将 ISO 8601 时间戳转换为 Unix 时间戳?

将 ISO 8601 转换为 unix 时间戳

如何在 PHP 中将日期时间转换为 ISO 8601

如何在php中将ISO8601转换为日期格式

Spring Boot 问题使用 Jackson 序列化 java.time.LocalDateTime 以返回 ISO-8601 JSON 时间戳?