【发布时间】:2012-05-17 16:28:48
【问题描述】:
*(这是针对 ISV 数据库的,所以我是一种逆向工程,无法更改)...
如何在 C# 中将以下日期转换为 int (visa/versa) ...
所以说日期是:
5/17/2012
它被转换为 int
77207
在数据库中。
起初我以为这是朱利安约会,但事实并非如此。我在玩Julian Date Question 的方法,但这不匹配。
var date = ConvertToJulian(Convert.ToDateTime("5/17/2012"));
Console.WriteLine(date);
public static long ConvertToJulian(DateTime Date)
{
int Month = Date.Month;
int Day = Date.Day;
int Year = Date.Year;
if (Month < 3)
{
Month = Month + 12;
Year = Year - 1;
}
long JulianDay = Day + (153 * Month - 457)
/ 5 + 365 * Year + (Year / 4) -
(Year / 100) + (Year / 400) + 1721119;
return JulianDay;
}
Outputs 2456055 //Should be 77207
我一直在使用这个 SQL 进行转换:
SELECT Convert(date, CONVERT(CHAR,DATEADD(D, 77207, '1800-12-28'),101))
而且它似乎是准确的。我怎么能在 C# 中进行这种转换?有人可以告诉我这是基于什么标准,还是仅仅是随机转换。提前致谢。
【问题讨论】:
-
您是否尝试查看 2012 年 5 月 18 日是否生成 77208 或 2012 年 5 月 16 日是否生成 77206?
-
@Josh 是的,我就是这样算出那一点 sql ...5/18 = 77208 等等 ...
-
为遇到此问题的未来人员重命名