从客户中得到一种时间格式,39037.4811041088  ,具客户大概说明为小数点前为从1900年到现在的天数,后面不了解,盼给出如何转换成timestamp格式,谢谢

解决方案 »

  1.   

    /**
         * 得到1900年1月1日后几天的日期,
         * @param count           天数
         * @param dateFormat      日期格式:缺省为E yyyy年MM月dd日,常用格式yyyyMMdd HH:mm:ss
         * @return
         */
        public static String getCurAfterDay(int count,String dateFormat){
            String str=dateFormat==null?"E yyyy年MM月dd日":dateFormat;
            SimpleDateFormat format = new SimpleDateFormat(str);
            GregorianCalendar cal = new GregorianCalendar();
            cal.add(Calendar.DATE,count);
            String curdate=format.format(cal.getTime());
            return curdate;
        }
      

  2.   

    这个貌似是Excel里面存储日期的格式,后面小数代表时间,比如0.5 = 12:00, 0.75 = 18:0039037在Excel里面是今天2006/11/16,但是Excel的日期格式有几个致命问题,
    首先,和Javaer的想法不同,0代表1900/01/00而,1900/01/01则由1来表示,导致了[0, 1)之间的数据理论上全部非法,
    其次,不能表示1900年1月1日之前的数据,也就是负数是非法的,
    最后,你可以在Excel里面输入60,然后将格式改为日期,可以发现是1900年2月29日,但是这天显然不存在(xx00年要是400的整倍才是闰年,1900不是,2100也不是)
      

  3.   

    所以你要和客户确认是否就是Excel里面的格式,如果是,则上述问题怎么解决
      

  4.   

    谢谢各位,已经找到答案了,是以1989-12-30 12:00:00 做为0点,小数点前为相差天数,小数点后转换为24*0.4811041088*3600*1000转换成毫秒再换成Timstamp格式。