首先,我知道我可以使用Calendar
,但我想了解这个问题并学会解决它。
我有Date
当前日期。我想将小时,分钟和秒设置为0.我使用此代码执行此操作:
current_date.setHours(0);
current_date.setMinutes(0);
current_date.setSeconds(0);
出现了问题,因为如果我这样做,那么这一天会减少1,例如,如果今天是31,那么这一天会被设置为30。
为什么呢?如何通过Date
解决(不使用Calendar
,我想学习如何通过艰难的方式解决这个问题)。感谢
答案 0 :(得分:2)
看看这些方法的实现。他们使用格里高利历。错误可能来自该交互。
注意:自JDK 1.1 see
以来,所有已弃用的方法都已弃用答案 1 :(得分:2)
猜猜......
我想这与时区有关。
当您将HMS设置为0时,您不是根据您的时区设置它们,而是根据UTC(不是100%确定,但是......)。所以结果日期不是:
0:0:0 YOUR LOCAL
但
0:0:0 GMT
如果你在美国,那就是前一天。
尝试将分钟设置为-yourDate.getTimezoneOffset()
(如果不起作用,请尝试使用正值)。