我得到一个Date数据,然后我要取整的日期,比如,"2006-11-09 12:00:00.000",要变成"2006-11-09 00:00:00.000"可是貌似没有直接的方法,大家是怎么做的?我用Calendar.set()函数来去掉时间部分的值,结果发现不行:
public static void main(String[] args) {
DateFormat format = SimpleDateFormat.getDateTimeInstance();
try {
Date date = format.parse("2006-11-09 12:00:00.000"); // TimeZone tz = TimeZone.getTimeZone("GMT+8:00");
// Calendar cal = GregorianCalendar.getInstance(tz);
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(date);
// cal.setLenient(false);                        //清除时间部分的值
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
date = cal.getTime(); System.out.println(format.format(date)); } catch (ParseException e) {
e.printStackTrace();
return;
}
}
结果还是显示2006-11-9 12:00:00,那个12点还没去掉,有点糊涂,有点崩溃JRE为  JDK1.6 update 6望达人启发我

解决方案 »

  1.   

    cal.set(Calendar.HOUR, -12);喵~```
      

  2.   

    cal.set(Calendar.HOUR_OF_DAY, 0);
      

  3.   

    楼主这个意思?        public static void main(String[] args) {
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
    Calendar cal = GregorianCalendar.getInstance(); System.out.println(format.format(cal.getTime()));
    }
      

  4.   

    OK,楼上是对的,谢大大,谢大大们然后,想问一下,给定year,month,day,大家如何创建一个时间值为0的Date?
    不能用deprecated的方法我大致是这样做:
    Calendar cal = GregorianCalendar.getInstance();
    cal.set(year, month, day, 0, 0, 0);
    return cal.getTime();但是这样有点废,因为
    Calendar cal = GregorianCalendar.getInstance();
    调用了一次无用的构造,特别是System.currentTimeMillis(),
    貌似没有直接的 new GregorianCalendar(year, month, day, h, m, s, ms)方法?
      

  5.   

    .
    Date date = format.parse("2006-11-09 12:00:00.000"); 这句中的12时,只要不大于12时就可以输出2006-11-9 0:00:00.这是为什么呢?
      

  6.   

            Calendar c = Calendar.getInstance();
    c.setTime(new Date());
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    System.out.println(c.getTime().toLocaleString());