DOBON.NETプログラミング道掲示板

■35450 / 1階層)  Excelの数値 -> 日付みたいな関数?
□投稿者/ Hongliang 大御所(642回)-(2023/06/12(Mon) 08:47:46)
  • アイコンDateTime.FromOADate(Double)
    で、1899/12/30からの経過日数をDateTime型に変換できます。
    ほぼExcelと同等ですが、61未満の間は日付にズレが生じます(Excelだと0が1900/1/0、60が1900/2/29という存在しない日付になります)。時刻部分は変わりません。
    // あとExcelには1904年から計算するというオプションもあるみたいですが…。

    そこからTimeSpanを取り出すには、以下のようにします。
    TimeSpan span = DateTime.FromOADate(...) - new DateTime(1899, 12, 30);

    あと、30分を意味する 1/48 は循環小数なので厳密には 0.020833333333... と3が無限に続きます。
    0.020833だと00:29:59.971...となって、
    Excelだとミリ秒以下を四捨五入して0:30:00と表示されますが、
    DateTime.FromOADateはミリ秒まで計算して29分59秒971扱いになります。
    DateTime.FromOADateに渡す値として0.02083333まで桁を伸ばすと正確な30分に変換されます。
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Excelの数値 -> 日付みたいな関数? /はな →Re[2]: Excelの数値 -> 日付みたいな関数? /はな
 
上記関連ツリー

Nomalアイコン Excelの数値 -> 日付みたいな関数? / はな (23/06/11(Sun) 22:08) #35449
Nomalアイコン Excelの数値 -> 日付みたいな関数? / Hongliang (23/06/12(Mon) 08:47) #35450 ←Now
  └Nomalアイコン Re[2]: Excelの数値 -> 日付みたいな関数? / はな (23/06/12(Mon) 21:53) #35456 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -