OLEDate java实现
我需要一个好的 OLEDate java 实现,这个 可以似乎不起作用。是否有任何已知的好的开源实现(例如在 apache commons 中)?如果没有,我在哪里可以读到它,以便我编写自己的实现?
I need a good OLEDate java implementation, and this one does not seem to be working. Is there any known good opensource implementations (like in apache commons)? If not, where do I read about it, so that I write my own implementation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个代码:
Try this code:
之前的实现存在缺陷,例如 1.0 和 -1.25 的日期错误。
下面的实现符合 MSDN 中描述的 OLE 日期,例如: https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx
下面的实现确实符合 MSDN 文档。
它将 BigDecimal 值转换为 Joda LocalDateTime。
BigDecimal 比 float 和 double 更好,因为它能够保存精确的值。
The previous implementation is buggy, e.g. wrong dates for 1.0 and -1.25.
The implementation below conforms to OLE date described in MSDN, e.g. here: https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx
Implementation below does conform to the MSDN documentation.
It converts a BigDecimal value to Joda LocalDateTime.
BigDecimal is better than float and double since it is able to hold a precise value.
此旧新事物博客条目似乎是关于该主题的不错的论文:
OLE 自动化日期格式是一个浮点值,计算自 1899 年 12 月 30 日午夜以来的天数。小时和分钟表示为小数天数。
如果您有权访问 Visual Studio 和 MFC COleDateTime 源,则可以用 Java 重新实现它。
This Old New Thing blog entry seems to be a decent treatise on the topic:
The OLE automation date format is a floating point value, counting days since midnight 30 December 1899. Hours and minutes are represented as fractional days.
If you have access to Visual Studio and the MFC COleDateTime source, you can reimplement that in Java.