3

首先,我知道我可以使用Calendar,但我想了解这个问题并学会解决它。

我有一个Date当前日期。我想将小时、分钟和秒设置为 0。我使用以下代码执行此操作:

        current_date.setHours(0);
        current_date.setMinutes(0);
        current_date.setSeconds(0);

出了点问题,因为如果我这样做,天会减少 1,例如,如果今天是 31,那么天会被设置为 30。

为什么?如何解决Date(不使用Calendar,我想学习如何通过困难的方式解决这个问题)。谢谢

4

2 回答 2

2

看看这些方法的实现。他们使用公历。错误可能来自该交互。

注意:自 JDK 1.1 起,set 方法均已弃用,请参阅

于 2012-07-31T12:10:42.357 回答
2

只是猜测...

我想这与时区有关。

当您将 HMS 设置为 0 时,您不是根据您的时区设置它们,而是根据 UTC(不是 100% 确定,但是......)。所以结果日期不是:

0:0:0 YOUR LOCAL

0:0:0 GMT

如果你在美国,那是前一天。

尝试将分钟设置为-yourDate.getTimezoneOffset()(如果不起作用,请尝试使用正值)。

于 2012-07-31T12:49:35.770 回答