我该如何设定日期?

时间:2013-08-20 07:52:43

标签: java date calendar

我想用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 个答案:

答案 0 :(得分:2)

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

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

由于

答案 1 :(得分: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)

答案 2 :(得分:0)

短代码并不是Java(或其他语言)的好方法。您必须清楚地了解您和其他想要使用您的代码的开发人员。

所以,在我看来,你可以使用第一种方法但使用更多的java文档和注释比第二种方法更明确(注意:第二种方法是最明确的,但它也需要注释......)

答案 3 :(得分:0)

斯特凡,我认为你应该采取更清洁的方法。第一种方法只有两行代码来解决您的问题。你应该采用它。根据我的开发经验,我了解到LOC(代码行)在维护代码时非常重要,我们应该始终考虑用最少的代码行来解决问题。所以我认为你应该利用多参数setter API 谢谢!