大牛们, 帮我看看这个问题啊
    我时间格式是一定的, yyyyMMddHHmmss, 不能是其他的
     我把时间分别以不同单位转化, 5分钟,1小时和一天
  现在问题是, 5分钟和1小时的都可以, 但是一天的就多了8小时
   请你们解决: 代码如下:
  package cn.wang.test;import java.text.SimpleDateFormat;
import java.util.Date;public class Test {    /**
     * 把日期形式改变成指定的格式
     * @param date
     * @return 指定格式
     */
    public static String dateFormat(Date date) {
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        
        String dateStr = null;
        
        try {
            dateStr = sdf.format(date);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return dateStr;
    }    public static void main(String[] args){
/*        int i=1;
        
        do {
            System.out.println(i);
            i ++;
        } while (10 >= i);*/
        
        Date date = new Date();
        
        long fiveMinute = (date.getTime() / 300000) * 300000;
        long oneHour = (date.getTime() / (1000 * 3600)) * (1000 * 3600);
        long oneDay = (date.getTime() /(1000 * 3600 * 24)) * (1000 * 3600 * 24);
        
        Date dateFive = new Date(fiveMinute);
        Date dateHour = new Date(oneHour);
        Date dateDay = new Date(oneDay);
        
        System.out.println("Five minutes: " + dateFormat(dateFive));
        System.out.println("One hour: " + dateFormat(dateHour));
        System.out.println("One day: " + dateFormat(dateDay));
    }
}实际输出如下:  Five minutes: 20100722103500
One hour: 20100722100000
One day: 20100722080000
希望输出如下:  Five minutes: 20100722103500
One hour: 20100722100000
One day: 20100722000000

解决方案 »

  1.   

    你可以做这么件事情long testTime= 0;
    Date testDate = new Date(testTime);
    System.out.println("One day: " + dateFormat(testDate ));得到的结果就是19700101080000
      

  2.   

    LZ,我问个问题
    int a = 10;
    int b = 3;
    System.out.println(10/3);  这个等于多少
      

  3.   

    你们都没有弄清楚我的问题
      我是想知道为什么, 不是要去手动把8小时去掉
      要去掉我还不如用 yyyyMMdd000000呢?
      所以, 懂我的意思了?
     谢谢大家, 我也考虑过5楼的问题, 不过, 不知道解决办法
      

  4.   


    10/3 * 3 = ?数学里面,我们都知道是等于10
    然后JAVA里面
    我认为你是知道等于9的
      

  5.   

    我又问,你换成一个long,又换回一个date干嘛?
      

  6.   

    所以才说不明白你想干嘛你已经有一个date了,都可以转成天或着5分钟,你又再用那个天和5分钟换成date,那本来就有date又搞个新date,就不明白了或者GregorianCalendar这个是你想要的,不过我还是不明白你想干嘛
      

  7.   

    简单的说, 就是要把一个时间转换成以‘天’为单位, 也就是说,应当是
    20100722000000, 或者201007230000, 而把分钟和秒钟给截掉了,
    但是格式必须是 yyyyMMddHHmmss, 我在转换成‘5分钟’, ‘小时’为单位的时候没有问题
     但是到‘天’就多了把小时, 不知道为什么, 
     不知道你东没有懂啊?
      

  8.   


    Date nowDate = new Date();
    long longDate = nowDate.getTime()/1000/60/60/24;
    Calendar calendar = new GregorianCalendar();
    Date newDate = new Date(longDate*1000*60*60*24);
    calendar.setTime(newDate);
    calendar.set(Calendar.HOUR, 0);

    DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(f.format(calendar.getTime()));
    我看GregorianCalendar比较符合你胃口
      

  9.   

    GregorianCalendar(TimeZone zone) 
    GregorianCalendar(Locale aLocale) 
    忘了还有这么2个构造器,用上的话,可以废掉calendar.set(Calendar.HOUR, 0);
      

  10.   

    楼上的都说完了!
    咱在东8区, 20100722080000 是北京时间, GMT就是0点