SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date da = new Date();
long day = 24 * 3600 * 1000;
da.setTime(da.getTime() / day * day);//这个相当于取整,去掉小时,分钟和秒了啊
System.out.println(sdf.format(da));
我想得到2010-09-09 00:00:00但是结果是2010-09-09 08:00:00不解!
有其它方法获得这个结果,但是我想不明白为什么我这个方法不行!
Date da = new Date();
long day = 24 * 3600 * 1000;
da.setTime(da.getTime() / day * day);//这个相当于取整,去掉小时,分钟和秒了啊
System.out.println(sdf.format(da));
我想得到2010-09-09 00:00:00但是结果是2010-09-09 08:00:00不解!
有其它方法获得这个结果,但是我想不明白为什么我这个方法不行!
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00");//改成这样就行了
如果小时也不要 就把HH也改成00
日历计算用日历类Calendar
Calendar cal =new GregorianCalendar(Locale.CHINA);
cal.setTime(new Date());
cal.set(Calendar.HOUR_OF_DAY, 0);就可以了
cal.set(Calendar.SECOND, 0);
还不如pengzhistar说的了,为什么按我的思维就不行呢!!
有时区的问题啊,中国只是+8而已
而且Calendar还有别的其他功能,很方便,比起DATE好用,再说,GregorianCalendar有几个构造器,可以不用每个都设为0
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date da = new Date();
long day = 24 * 3600 * 1000;
da.setTime(da.getTime() / day * day);//这个相当于取整,去掉小时,分钟和秒了啊
System.out.println(sdf.format(da)); 这样看起来是不是中意了?