0

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

例如,用户可以将 1.000.000 周添加到他的生日,并且当他正好 1.000.000 周大时,他将获得 DateTime。

DateTime 对象有一些很好的方法来解决这个问题,比如plusSecondsor plusHours。不幸的是,那些方法只有一个int值。

为了让我的用户添加更多的数字,我想使用一个long值。

我可以以毫秒为单位转换用户输入并使用plus方法,该方法期望long以毫秒为单位的值,但日期计算将变得不准确。

有什么方法可以long为几天或几个月等添加一个仍然准确的值吗?

4

1 回答 1

0

编写方法以通过将给定的 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);
}
于 2013-11-10T19:22:55.063 回答