
从现在开始:
long DAY_IN_MS = 1000 * 60 * 60 * 24;new Date(System.currentTimeMillis() - (7 * DAY_IN_MS))
从任意
Date date:
new Date(date.getTime() - (7 * DAY_IN_MS))
编辑:如其他答案所指出,如果这是一个因素,则不考虑夏令时。
只是为了澄清我在谈论的限制:
对于受日光节约时间的人 ,如果
7 days earlier,你的意思是,如果现在的问题是
12pm noon on 14 Mar2010,你想要的计算
7 days earlier导致
12pm on 7 Mar 2010,那么要小心。
该解决方案可以准确地找到日期/时间24小时* 7天= 168小时。
然而,有些人 感到惊讶 时,该解决方案发现,例如,
(14 Mar 2010 1:00pm) - 7 * DAY_IN_MS可能会
返回一个结果
(7 Mar 2010 12:00pm),其中 在时区挂钟时间 不是2日期/时间之间的相同(
1pmVS
12pm)。这是由于当天晚上开始或结束的夏令时以及“挂钟时间”损失或增加了一个小时。
如果DST不是您要
(168 hours)考虑的因素,或者您确实确实想要DST (无论挂钟时间的变化如何),那么此解决方案就可以正常工作。
否则,当您的时间
7 days earlier并非真正意味着168小时(由于DST在该时间范围内开始或结束)时,您可能需要补偿。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)