6

DateTime.ToOaDate() で理解できなかったことがあります。

これが私が持っているものです

var plainDate = "01/07/2011";
var dateTime1 = DateTime.Parse(plainDate, new CultureInfo("en-GB"));
var value = dateTime1.ToOADate();
var dateTime2 = DateTime.Parse(DateTime.FromOADate(value).ToString(), new CultureInfo("en-GB"));

dateTime1 と dateTime2 は同じはずですよね? 単純な日付のみをティックに変換し、同じカルチャで DateTime として復元しましたが、実際に実行すると、dateTime2 の値は (1-Jul-2011) ではなく (7-Jan-2011) になります。

4

2 に答える 2

5

ToString への呼び出しでカルチャ情報が指定されていないためだと思います。

こちらもお試しくださいToString(new CultureInfo("en-GB"))

于 2012-04-26T16:14:38.627 に答える
5

を行うときはDateTime.Parse、受信日付が期待される形式を指定しています。

を行うToString()と、現在のカルチャを使用して日付をフォーマットする必要があることを指定しています。

Thread.CurrentThread.CurrentCulture.DateTimeFormatここでは、米国の形式を返していると思います。したがって、 をDateTime.FromOADate(value).ToString()返します07/01/2011。これを en-GB を使用して解析すると、1 月 7 日が返されます。

于 2012-04-26T16:15:07.083 に答える