【发布时间】:2013-07-23 04:42:53
【问题描述】:
我在 Java 中重置小时数时遇到问题。对于给定的日期,我想将小时数设置为 00:00:00。
这是我的代码:
/**
* Resets milliseconds, seconds, minutes and hours from the provided date
*
* @param date
* @return
*/
public static Date trim(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
return calendar.getTime();
}
问题是有时时间是12:00:00,有时是00:00:00,当我在数据库中查询保存在07.02.2013 00:00:00 上的实体时,实际存储的实体时间是@987654331 @查询失败。
我知道12:00:00 == 00:00:00!
我正在使用 AppEngine。这是 appengine 错误、问题还是其他问题?还是依赖于别的东西?
【问题讨论】:
-
这可能与不同的语言环境有关,还是一直在同一台 PC 上发生?
-
当我在 appengine 上部署时会发生这种情况。
-
很多其他的切断时间的解决方案:stackoverflow.com/a/1908955/2646526
-
仅供参考,麻烦的旧日期时间类,例如
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat现在是 legacy,被 Java 8 和 Java 中内置的 java.time 类所取代9. 见Tutorial by Oracle。 -
我使用了
calendar.set(Calendar.HOUR_OF_DAY, 0);,就我的目的而言,效果很好。