gpt4 book ai didi

java - 使用 SimpleDateFormat 解析自定义时间格式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:55 24 4
gpt4 key购买 nike

我在解析从 API 返回的日期格式时遇到问题,而且我从未见过这种格式(我相信这是一种自定义格式)。日期示例:

/Date(1353447000000+0000)/

当我第一次遇到这种格式时,没过多久我就发现它是带有时区偏移的以毫秒为单位的时间。不过,我在使用 SimpleDateFormat 提取此日期时遇到了问题。这是我的第一次尝试:

String weirdDate = "/Date(1353447000000+0000)/";

SimpleDateFormat sdf = new SimpleDateFormat("'/Date('SSSSSSSSSSSSSZ')/'");

Date d1 = sdf.parse(weirdDate);
System.out.println(d1.toString());
System.out.println(d1.getTime());
System.out.println();

Date d2 = new Date(Long.parseLong("1353447000000"));
System.out.println(d2.toString());
System.out.println(d2.getTime());

并输出:

Tue Jan 06 22:51:41 EST 1970
532301760

Tue Nov 20 16:30:00 EST 2012
1353447000000

日期(和解析的毫秒数)甚至还差得远,我还没弄清楚原因。经过一些故障排除后,我发现我尝试使用 SDF 的方式存在明显缺陷。示例:

String weirdDate = "1353447000000";

SimpleDateFormat sdf = new SimpleDateFormat("S");

Date d1 = sdf.parse(weirdDate);
System.out.println(d1.toString());
System.out.println(d1.getTime());

并输出:

Wed Jan 07 03:51:41 EST 1970
550301760

我不能说我曾经尝试过以这种方式使用 SDF 来解析以毫秒为单位的时间,因为我通常会使用 Long.parseLong() 并将其直接传递给 new Date(long)(事实上,我现在的解决方案只是一个正则表达式并解析一个 long)。我正在寻找一种更清洁的解决方案,我可以轻松地在毫秒内使用时区提取时间,并快速解析为日期,而无需进行繁琐的手动处理。任何人有任何想法或者可以发现我上面的逻辑中的错误吗?非常感谢您的帮助。

最佳答案

取字符串中的毫秒值:

/Date(1353447000000+0000)/

并将该值作为 long 传递给 Date 构造函数:

Date date = new Date(1353447000000);

并使用 SimpleDateFormat 格式化日期对象。

关于java - 使用 SimpleDateFormat 解析自定义时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767560/

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