2016-10-26 7 views
1
Iは恐ろしいExcelの日付形式にC#のDateTimeオブジェクトを変換する必要が

にC#のDateTimeオブジェクトを変換する:1900年1月1日からの日数の https://datapub.cdlib.org/2014/04/10/abandon-all-hope-ye-who-enter-dates-in-excel/Excelの日付形式

すなわち数、浮動小数点数として表されます。

DIYコードに頼らない方法はありますか? は、私の周り私は

+0

yyyy-MM-ddとしてCSVに入れてみましたか?それはうまくいくかもしれません。 –

+0

CSVはExcelと同じではありません。また、Excelの日付が明確に定義されているため、実際に日付がどのように格納されているかを知っていれば、恐怖を感じるフォーマットはありません。以前はよく知っていました –

+0

@PanagiotisKanavosあなたの迅速な対応に感謝します。ほとんどのユーザーはCSVをクリックし、Excelを使用してファイルを開きます。したがって、タイムスタンプは "OLE Automation Data"(別名日付を表すExcelの浮動小数点数)としてフォーマットする必要があります。私はCSVが単なるテキストであることを完全に理解しています。カラムの横に「列タイプ」はありません。 –

答えて

4

Excelの日付がOLEオートメーション日付形式を使用している優れたブログの記事を除いて便利なものを見つけられませんでしたグーグルExcel対応CSVエクスポート

を作成するためにそれを必要とします。 DateTime.ToOADate

OAの日付が1899年12月30日(つまり、以前の日付が負で)と小数部からその整数部分日付が相殺され、二重されているとあなたはそれをこのタイプの24

で割った時間がされたされて取得することができますCOM/VB6で多く使用されています。最近では、Excelや、日付やバリエーションに日付の内容が必要なCOM APIを呼び出す必要があるときに必要になります。

1

以下の方法で変換することができます。

return new DateTime(1899, 12, 31).AddDays(SerialDate);