繁体   English   中英

我该如何设定日期?

[英]How should I set the date?

我想用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);

哪一种更好? 如果我使用第二种方式,我必须输入更多,我知道代码应该尽可能短。 另一方面,第二种方式更清晰一点。

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

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

谢谢

修改日期的唯一方法是在一个原子操作中。 一次做一个字段有时会导致令人惊讶的错误结果。 当您创建新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)

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM