我有某种双格式数字作为字符串上传文件,每个文件都等于特定时间,如下所示:(实际上,我必须将左侧转换为右侧)

40981.0500559 = 13.03.2012 01:12:04.000

40981.0500676 = 13.03.2012 01:12:05.000

40981.0500792 = 13.03.2012 01:12:06.000

40981.0500910 = 13.03.2012 01:12:07.000

40981.0501025 = 13.03.2012 01:12:08.000


我尝试使用excel,发现前五位数显示了1900年的日期和递增计数,即00000。并且每天递增+1。后面的其余7位数字。它显示从00:00:00开始的时间(当它是.0000000时),每0.0000116的时间增加一秒,直到再次达到等于00:00:00的0.9999999。但是我对在Java中进行转换的方法感到非常困惑。我尝试了这个:

//Time[j] = 40981.0500559 as string format**

double T = Double.parseDouble(Time[j])*100000000- 2766489481590L;
DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.FFF");
System.out.println(formatter.format(T));


但是更改输入值时日期会错误。例如,40993.2891410应该变成25/03/2012 06:56:21.782,但是我知道上述命令并未针对所有数字进行校准。

最佳答案

尝试这个

 long T = (long)(Double.parseDouble("40981.0500559")*100000000- 2766489481590L);
 Date date=new Date(T);
 DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.F");
 System.out.println(formatter.format(date));

10-04 20:27