1

我想在 Java 中修改日期。没问题,但我对如何做到这一点有点困惑。

1.

Calendar c = Calendar.getInstance(); 
c.set(2010,9,10,6,0);

2.

Calendar c = Calendar.getInstance();
c.set(c.YEAR, 2010);
c.set(c.MONTH, 9);
c.set(c.DATE, 10);
c.set(c.HOUR, 6);
c.set(c.MINUTE, 0);

哪个是更好的方法?如果我使用第二种方式,我必须输入更多内容,并且我了解到代码应该尽可能短。另一方面,第二种方式更清楚一些。

4

4 回答 4

2

试试这个,但是 ctrl+space 下次可以帮助你。

Calendar cal = Calendar.getInstance();
    cal.set(year, month, date, hourOfDay, minute);

谢谢

于 2013-08-20T07:58:19.347 回答
1

修改日期的唯一方法是在一个原子操作中。一次做一个字段有时会导致令人惊讶的错误结果。当您创建一个新的Calendar时,它会使用今天的日期进行初始化。假设今天是 5 月 31 日,您将月份设置为 6 月,打算设置下一天。当您将月份设置为 6 月时,31 不再有效,因此日期“标准化”为 7 月 1 日。然后你设置了日期,但现在月份是错误的。

您可以构建很多这样的“有趣”案例。如果先设置月份,有些会失败,如果先设置日期,有些会失败,因此没有保证适用于所有情况的顺序。将日期设置为单个操作。

这里有些例子:

Today         Changes             Result
5/31/2013     MM->6, DD->12       7/12/2013 (not 6/12)
6/01/2013     DD->31, MM->07      7/01/2013 (not 7/31)
于 2013-08-20T07:59:40.490 回答
0

在 Java(或其他语言)中,简短的代码并不总是好的方法。您必须清楚自己和其他想要使用您的代码的开发人员。

因此,在我看来,您可以使用第一种方法,但与最明确的第二种方法相比,它具有更多的 java 文档和注释(注意:第二种方法是最明确的,但它也需要注释......)。

于 2013-08-20T08:05:08.450 回答
0

好吧,斯特凡,我认为您应该采用更清洁的方法。第一种方法只需两行代码即可解决您的问题。你应该采用它。从我的开发经验中,我了解到 LOC(代码行)在代码维护中非常重要,我们应该始终考虑用最少的代码行数来解决问题。所以我认为你应该利用多参数设置器 A​​PI。
谢谢!

于 2013-08-20T08:05:24.030 回答