* (Điều này là dành cho cơ sở dữ liệu ISV vì vậy tôi đang loại kỹ thuật đảo ngược này và không thể thay đổi) ...CLARION ngày chuyển đổi C# + NGÀY ADD/SUBTRACT
Làm thế nào tôi có thể làm ngày sau để int (visa/lại) chuyển đổi trong C# ...
Vì vậy nói ngày là:
5/17/2012
nó được chuyển đổi sang int
77207
trong cơ sở dữ liệu.
Lúc đầu, tôi nghĩ đây là một ngày Julian tuy nhiên nó không xuất hiện như vậy. Tôi đã lừa xung quanh với phương pháp từ Julian Date Question tuy nhiên điều này không khớp.
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
Tôi đã sử dụng SQL này để thực hiện chuyển đổi:
SELECT Convert(date, CONVERT(CHAR,DATEADD(D, 77207, '1800-12-28'),101))
và nó dường như là chính xác. Làm thế nào tôi có thể thực hiện chuyển đổi này trong C#? Và ai đó có thể làm sáng tỏ tôi như những gì tiêu chuẩn này được dựa trên hoặc là nó chỉ đơn giản là một chuyển đổi ngẫu nhiên. Cảm ơn trước.
Bạn đã cố gắng để xem nếu 2012/05/18 tạo 77.208 hoặc nếu 2012/05/16 tạo ra 77206? – Josh
@Josh Vâng đó là cách tôi đã tìm ra rằng bit của sql ... 5/18 = 77208 vv ... –
Đổi tên cho những người trong tương lai đang gặp sự cố này –