gpt4 book ai didi

Java SimpleDateFormat 不能正常工作

转载 作者:行者123 更新时间:2023-11-29 21:39:56 24 4
gpt4 key购买 nike

我对 SimpleDateFormat 有一个奇怪的问题,问题是日期格式化程序没有将日期解析到我的时区中,即使 TimeZone.getDefault() 给我正确的时区也是如此。

如果这还不够,我运行以下命令并得到以下结果(在评论中):

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yy HH:mm a");

Date now = new Date();
System.out.println(now); // Wed Jul 03 18:58:37 CDT 2013
System.out.println(df.format(now)); // 07/03/13 18:58 PM (ok)
System.out.println(df.parse("07/03/13 18:58 PM")); // Wed Jul 03 00:58:00 CDT 2013 (not ok)
System.out.println(df.parse(df.format(now))); // Wed Jul 03 00:58:00 CDT 2013

这怎么可能??我什至不确定 df.parse 方法在做什么,因为结果小时永远不会超过凌晨 1 点,我的意思是,那是在 18:58,但现在我的时间是 7:32,我仍然得到 00:32而不是 1:32。

我错过了什么吗?字符串日期是从服务器获取的,它们的格式不能更改,因为它们用于其他已经生产的服务。

这发生在安卓手机上,时间在手机里设置好了。

最佳答案

好的,我明白了,“不超过凌晨 1 点是关键”

问题是解析文本 "H" 在 0-23 小时使用,对于 am-pm 你应该使用 "h""K”

最终格式字符串必须是:

"MM/dd/yy hh:mm a"

我认为 Java 应该发送一个错误或警告来尝试解析过去的 >12 小时,而不是仅仅用“00”替换它。

关于Java SimpleDateFormat 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17460006/

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