Преобразование даты Excel в DateTime на C#: несколько методов преобразования

Чтобы преобразовать дату Excel в объект DateTimeв C#, вы можете использовать различные методы. Вот несколько подходов:

Метод 1: использование метода DateTime.FromOADate

double excelDate = 44197.5; // Example Excel date value
DateTime dateTime = DateTime.FromOADate(excelDate);

Метод 2: использование метода DateTime.FromOADateс приведением типов

double excelDate = 44197.5; // Example Excel date value
DateTime dateTime = (new DateTime(1899, 12, 30)).AddDays(excelDate);

Метод 3: использование метода DateTimeOffset.FromUnixTimeSeconds

double excelDate = 44197.5; // Example Excel date value
DateTimeOffset unixEpoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
DateTimeOffset dateTimeOffset = unixEpoch.AddSeconds((excelDate - 25569) * 86400);
DateTime dateTime = dateTimeOffset.DateTime;

Метод 4: использование метода DateTime.FromOADateс настраиваемой корректировкой эпохи

double excelDate = 44197.5; // Example Excel date value
DateTime epoch = new DateTime(1900, 1, 1);
DateTime dateTime = epoch.AddDays(excelDate - 2); // Subtract 2 to account for Excel's incorrect leap year handling

Метод 5. Использование метода DateTime.ParseExactс собственным форматом

string excelDateString = "2021-09-15"; // Example Excel date value as string
DateTime dateTime = DateTime.ParseExact(excelDateString, "yyyy-MM-dd", CultureInfo.InvariantCulture);

Метод 6: использование метода DateTimeOffset.FromFileTime

long excelDate = 132287040000000000; // Example Excel date value as a file time
DateTimeOffset dateTimeOffset = DateTimeOffset.FromFileTime(excelDate);
DateTime dateTime = dateTimeOffset.DateTime;