首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇异java.util.calendar输出

奇异java.util.calendar输出
EN

Stack Overflow用户
提问于 2014-01-20 10:53:43
回答 3查看 235关注 0票数 1

我试图使用从日期中清除时间部分。下面是基于其他堆栈溢出解决方案的代码:

代码语言:javascript
复制
Calendar cal = Calendar.getInstance();
// cal.setTime(new Date());
cal.clear(Calendar.HOUR);
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);
// cal.clear(Calendar.ZONE_OFFSET);
cal.clear(Calendar.HOUR_OF_DAY);

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormat.format(cal.getTime());
System.out.println(dateFormat.format(cal.getTime()));
System.out.println(cal.getTime());

但是当前的输出是:2014-01-20 12:00:00

可能是什么原因?为什么时间是显示12:00:00?我只想要一个时间00:00:00的约会对象。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-20 11:01:15

根据javadoc of Calendar.clear

HOUR_OF_DAY、HOUR和AM_PM字段是独立处理的,并应用了一天中时间的解析规则。清除其中一个字段不会重置此日历的一天小时值。使用set(Calendar.HOUR_OF_DAY,0)重置小时值。

因此,不要使用clear,而是使用:

代码语言:javascript
复制
cal.set(Calendar.HOUR_OF_DAY, 0)

clear实际上并没有清除hour值,因此在格式化程序中乱搞了这么多!

票数 2
EN

Stack Overflow用户

发布于 2014-01-20 10:57:12

日期/日历正常,错误出现在格式字符串中:

  • hh:表示12小时时间格式
  • HH:表示24小时时间格式

正确的格式字符串:

代码语言:javascript
复制
yyyy-MM-dd HH:mm:ss

输出:

代码语言:javascript
复制
2014-01-20 00:00:00
Mon Jan 20 00:00:00 CET 2014
票数 4
EN

Stack Overflow用户

发布于 2014-01-20 10:58:54

就像这样

代码语言:javascript
复制
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);


    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    dateFormat.format(cal.getTime());
    System.out.println(dateFormat.format(cal.getTime()));
    System.out.println(cal.getTime());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21232049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档