这是二月还是三月的日期?校准集(2010, 1, 10)

发布于 2024-09-30 11:15:46 字数 465 浏览 2 评论 0原文

我已在我的应用程序中设置了此日历:

Calendar cal = Calendar.getInstance();
cal.set(2010, 1, 10); 

我使用此 SimpleDateFormat 将月份作为单词获取:

SimpleDateFormat formatMonth = new SimpleDateFormat("MM");

在一个类中,它显示为 February 2010 年 10 号

在另一个版本中,它显示为 March 10th, 2010

哪个是正确的?

I have set this calendar in my app:

Calendar cal = Calendar.getInstance();
cal.set(2010, 1, 10); 

I'm using this SimpleDateFormat to get the month as a word:

SimpleDateFormat formatMonth = new SimpleDateFormat("MM");

In one class it comes out as February 10th, 2010.

In another it comes out as March 10th, 2010.

Which is correct?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

所谓喜欢 2024-10-07 11:15:46

Calendar.set() 从零开始,因此 1 表示 二月。第一个行为是正确的。

我怀疑您的其他班级中的某些内容错误地尝试补偿从零开始的月份索引,这会导致 相差一错误。

The month argument to Calendar.set() is zero-based, so 1 means February. The first behavior is the correct one.

I suspect something in your other class is mistakenly trying to compensate for zero-based month indexes, and that results in an off-by-one error.

一个人的旅程 2024-10-07 11:15:46

日历类具有月份常量

 Calendar.JANUARY

例如, 。你应该使用那些。

The calendar class has constants for months

 Calendar.JANUARY

for example. You should be using those.

梦里人 2024-10-07 11:15:46

考虑到与 JDK 日期处理相关的所有麻烦,您确实应该使用 Joda 时间。上述代码将被重写为

DateTime dt = new DateTime().withDate(2010,2,10).withTime(12,13,14,0);

2010 年 2 月 10 日 12:13:14.000(UTC)。没有歧义,线程安全且不可变。

您应该注意 SimpleDateFormat 不是线程安全的。

Given all the hassles associated with the JDK date handling, you should really be looking to use Joda time instead. The above code would be rewritten as

DateTime dt = new DateTime().withDate(2010,2,10).withTime(12,13,14,0);

and represents 10 February 2010 at 12:13:14.000 in UTC. No ambiguity, thread safe and immutable.

You should note that SimpleDateFormat is not thread safe.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文