gpt4 book ai didi

java GregorianCalendar 添加小时奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 00:03:55 27 4
gpt4 key购买 nike

我在使用 GregorianCalendar 时遇到问题,因此请您帮我解决一下。首先我会给你我的代码:

private String changeClock(String day, String clock, int change) {
String time="";
DateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date d=df.parse(day+" "+clock);
GregorianCalendar g=new GregorianCalendar();
g.setTime(d);
g.add(GregorianCalendar.HOUR_OF_DAY, change);
time=g.get(GregorianCalendar.YEAR)+"-"
+(g.get(GregorianCalendar.MONTH)+1)+"-"
+g.get(GregorianCalendar.DAY_OF_MONTH)+" "
+g.get(GregorianCalendar.HOUR_OF_DAY)+":"
+g.get(GregorianCalendar.MINUTE);
} catch (Exception e) {
e.printStackTrace();
}
return time;
}

让我解释一下发生了什么。我有一个带有 + 和 - 按钮的 GUI。当有人按 + 时,会增加一小时,或者如果按 - 则增加一小时。

现在例如,时间是 23:00,我按 +,一切正常,并跳转到第二天的 00:00。问题出现在 12:00。如果现在是 12:00,我按 +,它就会转到 1:00,这样一直持续下去。即使在 2x12 小时或 21465x12 小时之后,它也不会移至第二天。如果我可以这么说的话,向后退会好一点。当时间为 00:00 时,我按 - 它会更改为昨天 23:00(日期也会更改)。如果我然后按 +,它也会向前一天更改(在本例中为今天)。

我做错了什么或者我还应该在代码中编写什么?

感谢大家的帮助。

最佳答案

您的日期格式错误...

您使用的是 hh,它表示“上午/下午的时间 (1-12)”,因此转换为下午 1 点的时间改为凌晨 1 点。

您应该使用 HH,它表示“一天中的小时 (0-23)”。

要么,或者您需要提供带有 am/pm 标记的日期/时间格式...

使用 DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm");DateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm a ");

您应该传入并返回一个Date对象,而不是依赖String日期/时间值,保留显示的格式。

关于java GregorianCalendar 添加小时奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268899/

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