0

I am converting DateTime to a string in en-US culture.

dateTimeString = dateTime.ToString();

But if I start my app in fr-FR culture and try to parse using below statement

DateTime.Parse(dateTimeString, CultureInfo.CurrentCulture);

It throws FormatException.

I am missing something?

4

2 に答える 2

2

はい、それは問題になるでしょう。

ToString()DateTimeのレギュラーは、次のような日付文字列を生成しen-USます。

"8/26/2012 8:54:16 PM"

代わりにfr-FRこれを生成します:

"26/08/2012 20:54:16"

したがって、最初の文字列 (en-US) を fr-FR 日時文字列として解析しようとすると、26 は無効な月と見なされ、aFormatExceptionが期待されます。

編集: 日付/時刻を操作するのは少し面倒です。移植性 (カルチャ形式とタイムゾーン間) のために、文字列としてシリアル化する必要がある場合は、ISO 8601形式でシリアル化することをお勧めします。

于 2012-08-26T20:59:09.897 に答える
1

jglouieが述べているように、異なるカルチャでは日時文字列を解析できません。

「en-US」を使用して解析する必要があります。

DateTime.Parse(dateTimeString, CultureInfo.CreateSpecificCulture("en-US"));

他に方法はありません。

最適な解決策は、 を に変換するときDateTimestringおよび を に解析するときに不変カルチャを使用するstringことDateTimeです。これにより、アプリケーションを実行しているコンピューターの設定に関係なく、一貫した結果が得られます。

于 2012-08-26T21:03:56.023 に答える