日历的add方法需要一个整数作为输入如何将长值添加到日历?在Java中
int secs = 3; cal.add(Calendar.SECOND, secs);
但如果秒长型的。
long secs = 3
有相当喜欢加入秒迭代几种可能性,但什么其他选择?
日历的add方法需要一个整数作为输入如何将长值添加到日历?在Java中
int secs = 3; cal.add(Calendar.SECOND, secs);
但如果秒长型的。
long secs = 3
有相当喜欢加入秒迭代几种可能性,但什么其他选择?
如果存储在long sec
值小于或等于则Integer.MAX_VALUE
可以转换为int
:
cal.add(Calendar.SECOND, (int) sec));
如果该值小于或等于Long.MAX_VALUE/1000
那么你就可以秒转换为毫秒,使用不同的方法:
cal.setTimeInMillis(cal.getTimeInMillis() + (sec*1000));
我将允许的最大日期设置为'Long.MAX_VALUE/1000',这已经足够并且使用了cal.setTimeInMillis(cal.getTimeInMillis()+(sec * 1000)); – Strudel 2010-08-10 11:14:25
如果秒的长整型值不是太大而不适合整数,则可以使用转换成。
long secs = 3;
cal.add(Calendar.SECOND, (int) secs);
但我强烈建议你使用joda time,而不是Java日历API。
乔达时间+1。 – InsertNickHere 2010-08-10 07:14:15
将秒数转换为例如天数除以86400,然后添加天数和剩余秒数。你需要巧妙地做到这一点,因为即使除以86400后,结果可能会比int大。
另一种方法是使用getMillisOf()将日历转换为毫秒,然后添加所需的值,然后使用setTimeInMillis()进行设置。这很简单,几乎没有犯错的风险,只要记住将秒转换为毫秒。
Afaik日历将内部值存储为整数,因此无法长时间存储。纠正我,如果我错了,但这是我读出Java calendar。你应该把你的秒数转换成几天以获得你想要的。
如果您的号码是大, 一个想法是,你在拖时添加这样做()
MaxInt: 2147483647
MaxLong: 9223372036854775807
因此
cal.add(Calendar.SECOND, secs/1000000000);
cal.add(Calendar.SECOND, secs % 1000000000);
哇,10分钟后,一鼓作气,4个答案。谢谢! – Strudel 2010-08-10 07:25:09