从现有日期对象中减去 6 小时 java(午夜极端情况)

Subtract 6 hours from an existing Date object java (midnight corner case)

我将为此使用 Calendar api。我主要担心的是

            Date birthDate = (...say Apr 20th 0300hrs)
            Calendar cal = Calendar.getInstance();
            cal.setTime(birthDate);
            cal.add(Calendar.HOUR, -6);
            Date newDate = cal.getTime();

newDate 会是 4 月 19 日 2100 时(晚上 9 点)吗?

是的。

参考 calendar.add

http://www.tutorialspoint.com/java/util/calendar_add.htm

Calendar 的 .add 方法中的第二个参数确实是增量或变化,所以是的,这会减去 6 小时。

在此处阅读更多内容: enter link description here

没有

在运行之后的代码如下:

Date birthDate = (...say Apr 20th 0300hrs)
Calendar cal = Calendar.getInstance();
cal.setTime(birthDate);
cal.add(Calendar.HOUR, -6);

您可以保证将校准设置为 'Apr 20th 0300hrs' 之前的六个小时,但不能保证它设置为 'Apr 19th 2100hrs'。