【问题标题】:string numbers to date and time format日期和时间格式的字符串数字
【发布时间】:2013-07-12 18:12:54
【问题描述】:

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

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 开始的时间,当它是 0.0000000 时,每 0.0000116 秒增加一次,直到达到 0.9999999,即再次等于 00:00:00。但我真的很困惑在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 但我知道上面的命令没有针对所有数字进行校准。

【问题讨论】:

  • 这是 Java 对吧?请这样标记它。
  • OLEDate java implementation 的可能重复项
  • 您有一个“OLE 自动化日期”,也就是“OLEDate”或“OADate”。您可以在this MSDN article 的“备注”部分了解它们。请参阅 this questionthis question 在 Java 中使用它们。
  • @Matt Interesting.. 这种格式背后的想法是什么?
  • @MichelFeldheim - 这是一种旧格式,现在很少需要,当然也不需要。有一些背景here

标签: java string datetime


【解决方案1】:

试试这个

 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));                                               

【讨论】:

  • 还有一些问题,我会调查的
  • 为什么格式字符串使用FFFF 记录为“月中的星期几”...
  • 嗨,例如“40981.0500559”,它应该是 13.03.12 01:12:04.830 但是我和你的格式日期是正确的,但是时间变成了 08:42:04.002 我尝试了另一个输入数据并且很长持续时间甚至日期都会出错。我认为减去那个长数字将它带入 java 标准毫秒时间会导致找到正确的日期和时间是错误的。
  • 你是对的 HH:mm:ss.F 是不对的 它应该是 HH:mm:ss.SSS 但是在没有做任何改变的问题中发生了找到正确答案的日期和时间...
猜你喜欢
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2023-03-14
相关资源
最近更新 更多