C# Julian 日期解析器
我在电子表格中有一个单元格,它是 Excel 中的日期对象,但当它来自 C1 的 xls 类时,它会变成双精度型(类似于 2009 年 1 月 7 日的 39820.0)。 我读到这是儒略日期格式。 有人能告诉我如何在 C# 中将其解析回 DateTime 吗?
更新:看起来我可能没有儒略日期,而是自 1899 年 12 月 30 日以来的天数。
I have a cell in a spreadsheet that is a date object in Excel but becomes a double (something like 39820.0 for 1/7/2009) when it comes out of C1's xls class. I read this is a Julian date format. Can someone tell me how to parse it back into a DateTime in C#?
Update: It looks like I might not have a Julian date, but instead the number of days since Dec 30, 1899.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我认为 Excel 只是使用标准的 OLE 自动化 DATE 类型,可以是使用
DateTime.FromOADate
方法进行转换。该代码块
输出:
I think Excel is just using the standard OLE Automation DATE type which can be converted with the
DateTime.FromOADate
method.This block of code,
outputs:
System.Globalization中有一个JulianCalendar类; 以下是您如何使用它:
编辑:
如果实际上是自“1900”以来的几天,您可以这样做:
There's a JulianCalendar class in System.Globalization; Here's how you would use it:
EDIT:
If it is in fact days since "1900" here's how you can do it:
该数字看起来像是“自 1900 年以来的天数”值。
That number looks like a 'number of days since 1900' value.
有两种方法可以执行此转换 --
OLE 自动化日期方法 --
DateAdd()方法,使用该方法,可以指定要转换成的日期类型
注意:这个日期常量 {12h December 31, 1899} 称为都柏林儒略日,记录在 儒略日
There are two ways to do this CONVERSION --
OLE Automation Date method --
DateAdd() Method, using this method, you can specify the kind of date to convert to
Note: This date constant {12h December 31, 1899} is called the Dublin Julian Day documented in Julian Day
处理 Excel 日期时,日期可能是日期的字符串表示形式,也可能是 OA 日期。 这是我不久前编写的一个扩展方法,以帮助促进日期转换:
When dealing with Excel dates, the date may be the string representation of a date, or it may be an OA date. This is an extension method I wrote a while back to help facilitate the date conversion:
只需将相关单元格格式设置为“日期”,使用 CTRL+1,然后选择所需的格式即可。
Just format the cell(s) in question as Date, use CTRL+1, and select the your desired format.