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