(おまけ) F#でExcelの日付データのシリアル値をDateTime型に変換する。
Excelのバグで1900/2/29の日付が存在します。
そのため、それ以降の日付のシリアル値に誤差が生じるたりします。
それも踏まえた形で関数を作成。
この関数はExcel-DNAくらいでしか使わないと思われます。
■実行結果
> getDate 36526;; val it : DateTime = 2000/01/01 0:00:00 {Date = 2000/01/01 0:00:00; Day = 1; DayOfWeek = Saturday; DayOfYear = 1; Hour = 0; Kind = Unspecified; Millisecond = 0; Minute = 0; Month = 1; Second = 0; Ticks = 630822816000000000L; TimeOfDay = 00:00:00; Year = 2000;} > getDate 73051;; val it : DateTime = 2100/01/01 0:00:00 {Date = 2100/01/01 0:00:00; Day = 1; DayOfWeek = Friday; DayOfYear = 1; Hour = 0; Kind = Unspecified; Millisecond = 0; Minute = 0; Month = 1; Second = 0; Ticks = 662380416000000000L; TimeOfDay = 00:00:00; Year = 2100;}
open System /// Excel日付の規定値 let excelBaseDate = DateTime.Parse("1899/12/31") /// Excel日付シリアル値をDateTimeに変換する。 let getDate x = let x = if x < 59 then x else x - 1 excelBaseDate.AddDays(float x) /// Excel日付シリアル値をDateTimeに変換する。 let getTryDate x = try Some <| getDate x with | _ -> None
-
- -