如果我在一个日期中将小时,分钟和秒设置为0,那么该日将减少1 ..
首先,我知道我可以使用Calendar
,但我想了解这个问题并学会解决它。如果我在一个日期中将小时,分钟和秒设置为0,那么该日将减少1 ..
我有一个Date
与当前日期。我想设置小时,分钟和秒0。我这个代码做到这一点:
current_date.setHours(0);
current_date.setMinutes(0);
current_date.setSeconds(0);
事情错了,因为如果我这样做,这一天被减1,例如,如果今天是31 ,当天设定为30.
为什么?如何解决与Date
(不使用Calendar
,我想学习如何解决这个难题)。谢谢
只是猜测设定方法都已过时......
我猜它与时区的事情。
当您将HMS设置为0时,您不是根据您的时区设置它们,而是根据UTC(不是100%确定,但是...)。所以生成的日期是不是:
0:0:0 YOUR LOCAL
但
0:0:0 GMT
,这是一个前一天,如果你是在美国。
尝试将分钟设置为-yourDate.getTimezoneOffset()
(如果不起作用,请尝试使用正值)。
看看这些方法的实现。他们使用公历。该错误可能来自该交互。
注:因为JDK 1.1 see
如果这是真的,这是一个绝对没有意义的惯例。 – 2012-07-31 12:12:52
尝试将小时,分钟和秒设置为零。检查是否递减长(0:00:00至23:59:59)导致较小的一天。 – RaphMclee 2012-07-31 12:18:05
我无法亲自复制问题中描述的情况。初始化一个Date对象给了我初始化的时间,调用'setHours(0)','setMinutes(0)'和'setSeconds(0)'给我一个今天午夜的Date对象,然后从中减去1000长期价值(稍早)给我一个昨天23:59:59的日期。 – 2012-07-31 12:21:58
@LukeTaylor为什么不呢?有很多可能有效的问题标题,包括“为什么”这个词。 – 2012-07-31 12:11:19
你的问题标题现在是合法的,这是所有的康夫之前。 :P – 2012-07-31 12:17:17
此代码不会改变一天; http://ideone.com/uE7Yx? – Patrick 2012-07-31 12:20:07