将长整型添加到日期时间



在我的程序中,用户可以以秒、小时、天、月、周或年为单位向给定的 DateTime 添加任何值,程序会计算新日期。

例如,用户可以将 1.000.000 周

添加到他的生日,当他正好是 1.000.000 周大时,他将获得 DateTime。

DateTime对象有一些很好的方法来解决这个问题,如plusSecondsplusHours。不幸的是,这些方法除了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);
}

最新更新