我用 VBA 编写了一个函数,它根据文件的属性创建代码。 我需要开发人员在 C# 中做同样的事情。
开发人员表示不可能在 C# 中执行相同的操作。
因此,在 VBA 中,我的部分过程是将日期转换为 double 型。 VBA 执行此操作的方式基本上是计算给定日期与 1900 年 1 月 1 日之间的天数。因此,2014 年 3 月 19 日将是 double 值 41,717。
如何用 C#(不是我熟悉的语言)编写一个函数来将日期数据类型转换为自 1900 年 1 月 1 日以来经过的天数?
如有任何帮助,我们将不胜感激。
最佳答案
减去两个 DateTime
得到一个 TimeSpan
。您只需使用 TimeSpan.TotalDays
即可获取两个日期之间的天数:
double days = (DateTime.Today - new DateTime(1900,1,1)).TotalDays;
如果 DateTime
有时间部分,它将表示为一天的分数,例如:
// current date and time (16:24:15)
(new DateTime(2014, 3, 18, 16, 24, 15) - new DateTime(1900,1,1)).TotalDays
会给你41714.6835069444
请注意,结果与在 VBA 中使用 CDbl()
的结果有 2 天的差异,因为 VBA 中的日期是用自 1899 年 12 月 30 日以来的天数表示的,而不是 1900 年 1 月 1 日以来的天数.
关于C# 将日期转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22490169/