gpt4 book ai didi

java - hh :mm a and HH:mm a 之间的区别

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

这是我的原始代码-

String dateString = "23 Dec 2015 1:4 PM";
Locale locale = new Locale("en_US");
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm a");
DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm a", locale);
Date date = null;

try {
date = formatter.parse(dateString);
} catch (ParseException e) {
LOGGER.error(e);
}

String newDate = df.format(date);
System.out.println("oldDate = " + dateString);
System.out.println("newDate = " + newDate);

这是我的输出-

oldDate = 23 Dec 2015 1:4 PM
newDate = 23 Dec 2015 01:04 AM

oldDatenewDate 之间存在AM-PM 差异。现在我将 DateFormat 代码更改为-

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy hh:mm a");
DateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm a", locale);

我得到了预期的输出,即-

oldDate = 23 Dec 2015 1:4 PM
newDate = 23 Dec 2015 01:04 PM

我知道 HH 表示 24 小时 格式,hh 表示12 小时 格式.

我的问题是

如果我使用 HH:mm a 而不是 hh:mm a,这不应该返回 24 小时制的时间吗格式?

(或)

如果它默认为 12 小时 格式,它是否应该根据提供的日期输入返回相应的 AM/PM 标记?

这只是我的理解。

最佳答案

更新的答案

这里的问题出在程序流程

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm a");

这个简单日期格式化程序用于格式化创建日期对象的日期字符串,这里是答案的重要部分

当您使用 HH 而不是 hh 时,SimpleDateFormater 认为提供的日期字符串是 24-Hour Format 并简单地忽略此处的AM/PM 标记

从这个 SimpleDateFormatter 构造的日期对象被传递给

DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm a", locale);

这就是它打印的原因

newDate = 23 Dec 2015 01:04 AM

如果你换行

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm a");

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy hh:mm a");

一切都会如期而至!

注意:在创建语言环境时,您应该将语言代码传递给 Locale() 构造函数。 en-us 不是 en_us

IMP:代码也在 Java 8 上进行了测试。 Java(TM) SE 运行时环境(build 1.8.0_121-b13)

关于java - hh :mm a and HH:mm a 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431260/

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