Clear Calendar.HOUR在Android上不起作用
这应该很简单:我想删除所有时间信息,只保留日期设置:Clear Calendar.HOUR在Android上不起作用,android,calendar,Android,Calendar,这应该很简单:我想删除所有时间信息,只保留日期设置: SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Calendar calendar = Calendar.getInstance(); log.debug("{}", calendar.getTimeInMillis()); calendar.clear(Calendar.HOUR_OF_DAY); log.debug("{}", calendar.get
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
log.debug("{}", calendar.getTimeInMillis());
calendar.clear(Calendar.HOUR_OF_DAY);
log.debug("{}", calendar.getTimeInMillis());
calendar.clear(Calendar.MINUTE);
log.debug("{}", calendar.getTimeInMillis());
calendar.clear(Calendar.SECOND);
log.debug("{}", calendar.getTimeInMillis());
calendar.clear(Calendar.MILLISECOND);
log.debug("{}", calendar.getTimeInMillis());
String today = format.format(calendar.getTime());
但它的时间是固定的:
06-03 07:14:31.296 1464930871295
06-03 07:14:31.297 1464930871295
06-03 07:14:31.297 1464930031295
06-03 07:14:31.298 1464930000295
06-03 07:14:31.299 1464930000000
06-03 07:14:31.300 Date is Thu Jun 02 07:00:00 GMT+02:00 2016
为什么?
更新
正如一些答案所指出的,这可能是错误的:
清除给定时间字段中的值,将其标记为未设置,然后
将其赋值为零。实际字段值将为
在下次访问该字段时确定
和也表示使用setCalendar.HOUR\u OF_DAY,0表示仅小时:
每天的小时、小时和上午下午字段是独立处理的 将应用一天中某个时间的解析规则。清零一号 其中的字段不会重置此日历的小时值。 使用setCalendar.HOUR\u OF_DAY,0重置小时值 和也表示使用setCalendar.HOUR\u OF_DAY,0表示仅小时:
每天的小时、小时和上午下午字段是独立处理的 将应用一天中某个时间的解析规则。清零一号 其中的字段不会重置此日历的小时值。 使用setCalendar.HOUR\u OF_DAY,0重置小时值
关于clearint字段的日历文档:
因此,当您在日志中调用calendar.getTimeInMillis时,该值将再次设置。如果您想查看该方法的工作方式,可以在那里设置断点并对其进行调试,以查看值如何重置。来自Calendar about clearint字段的文档:
因此,当您在日志中调用calendar.getTimeInMillis时,该值将再次设置。如果您想查看该方法的工作方式,可以在那里设置断点并调试它,以查看值是如何重置的。清除日期以外的单位的另一种方法是通过以下方式将所有单位设置为0或默认最小值
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMinimum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, calendar.getActualMinimum(Calendar.MINUTE));
calendar.set(Calendar.SECOND, calendar.getActualMinimum(Calendar.SECOND));
calendar.set(Calendar.MILLISECOND, calendar.getActualMinimum(Calendar.MILLISECOND));
String today = format.format(calendar.getTime());
清除日期以外的单位的另一种方法是将所有单位设置为0或默认最小值
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMinimum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, calendar.getActualMinimum(Calendar.MINUTE));
calendar.set(Calendar.SECOND, calendar.getActualMinimum(Calendar.SECOND));
calendar.set(Calendar.MILLISECOND, calendar.getActualMinimum(Calendar.MILLISECOND));
String today = format.format(calendar.getTime());
如果执行calendar.setCalendar.HOUR\u OF_DAY,0;,该怎么办?小时/天、小时和上午/下午字段独立处理,并应用时间的解析规则。清除其中一个字段不会重置此日历的小时值。使用setCalendar.HOUR\u OF_DAY,0重置小时值。如果使用calendar.setCalendar.HOUR\u OF_DAY,0;,该怎么办?小时/天、小时和上午/下午字段独立处理,并应用时间的解析规则。清除其中一个字段不会重置此日历的小时值。使用setCalendar.HOUR\u OF_DAY,0重置小时值。Android javadoc不同。无论如何,谢谢你,我会尝试的,但我现在必须离开。Android javadoc是不同的。不管怎样,谢谢你,我会尽力的,但我现在得走了。