gpt4 book ai didi

java - 为什么 12 :20 PM parse to 0:20 on the next day?

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:26 25 4
gpt4 key购买 nike

我正在使用 java.text.SimpleDateFormat 来解析 XML 文档中日期/时间值的字符串表示形式。我看到所有时间的小时值都为 12,在未来移动 12 小时,即。 e.中午过后 20 分钟被解析为第二天午夜过后 20 分钟。

我写了一个单元测试,似乎确认错误是在解析时发生的(我用 linux shell 命令 date 检查了 getTime() 的返回值) .现在我想知道:

  • parse() 方法中是否存在错误?
  • 输入的字符串有问题吗?
  • 我是否为输入使用了错误的格式字符串?

输入数据取自雅虎的 YWeather 服务。这是测试及其输出:

public class YWeatherReaderTest
{
public static final String[] rgDateSamples = {
"Thu, 08 Apr 2010 12:20 PM CEST",
"Thu, 08 Apr 2010 12:20 AM CEST"
};

public void dateParsing() throws ParseException
{
DateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy K:m a z",
Locale.US);
for (String dtsSrc : YWeatherReaderTest.rgDateSamples) {
Date dt = formatter.parse(dtsSrc);
String dtsDst = formatter.format(dt);
System.out.println(dtsSrc);
System.out.println(dtsDst);
System.out.println();
}
}
}
Thu, 08 Apr 2010 12:20 PM CESTFri, 09 Apr 2010 0:20 AM CESTThu, 08 Apr 2010 12:20 AM CESTThu, 08 Apr 2010 0:20 PM CEST

第二次迭代的第二行输出有点奇怪,因为 00:20 不是下午。但是,Date 对象的毫秒值对应于中午 20 分钟后的(错误)时间。

最佳答案

SimpleDateFormat 中的K 说明符是documented使用从 0 开始的小时数。不确定如果您要求它解析一个超出范围的值(如 12)会发生什么……它可能就像您输入 00:20 PM 一样然后再增加 12 小时。

如果您想在第一个小时使用 12,请尝试使用 h 说明符。

为什么 12 小时制崩溃的恐怖还没有消失?

关于java - 为什么 12 :20 PM parse to 0:20 on the next day?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603149/

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