gpt4 book ai didi

java - Calendar.setTime 设置错误的日期

转载 作者:行者123 更新时间:2023-12-05 00:00:13 46 4
gpt4 key购买 nike

下面的代码将日期设置为 2015 年 6 月 7 日午夜。为什么?我的时区是 UTC-07:00

格雷格

           Calendar HuntStart = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("M/d/yyyy K:mm a", Locale.US);
try {
HuntStart.setTime(sdf.parse("6/6/2015 12:00 PM"));//AllLists.get(position).HuntStart));
}
catch (ParseException ex) {

}

最佳答案

问题来自您在 SimpleDateFormat 构造函数中使用的小时字母。

请参阅 SimpleDateFormat JavaDoc SimpleDateFormat javaDoc :

K 上午/下午的小时 (0-11)
h 上午/下午 (1-12) 的小时数

您正在使用字母 K 并且 javadoc 说此选项应与小时 (0-11) 一起使用,以便您使用 12 在你的字符串中。我没有查看类的实现,但毫无疑问这是一个副作用。你重叠了允许的时间范围,所以你进入了第二天。遗憾的是构造函数如此宽容。 IllegalArgumentException 或类似的东西会很有用。

总而言之,您有 2 个解决方案。

如果您想使用 12 小时作为源字符串进行解析,您应该在构造函数中使用 h 字母模式。像那样:

    SimpleDateFormat sdf = new SimpleDateFormat("M/d/yyyy h:mm a", Locale.US);

如果你想保留你的小时模式 K,你不应该使用带有 12 而 0 的 String 实例作为解析方法的输入像那样:

    huntStart.setTime(sdf.parse("06/06/2015 00:00 PM"));// AllLists.get(position).HuntStart));

关于java - Calendar.setTime 设置错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30686616/

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