在我的程序中,用户可以以秒、小时、天、月、周或年为单位向给定的 DateTime 添加任何值,程序会计算新日期。
例如,用户可以将 1.000.000 周添加到他的生日,当他正好是 1.000.000 周大时,他将获得 DateTime。
DateTime对象有一些很好的方法来解决这个问题,如plusSeconds
或plusHours
。不幸的是,这些方法除了int
值。
为了允许我的用户添加更多的数字,我想使用long
值。
我可以以毫秒为单位转换用户输入并使用 plus 方法,该方法期望以毫秒为单位long
值,但随后日期计算将变得不准确。
有什么方法可以为天或月等添加仍然准确的long
值?
通过将给定的长整型值拆分为 int 最大值的倍数加上余数来增量添加天数/月的写入方法。
前任:
private void addMonths(DateTime dateTime, long months) {
int count = months / int.MAX_VALUE;
for (int i=0; i<count; i++) {
dateTime.plusMonths(int.MAX_VALUE);
}
dateTime.plusMonths(months % int.MAX_VALUE);
}