0

文字列形式の日付があります:C#プログラムの「28/09/2012」。「09/28/2012」形式の場合もあります。この文字列をDateTimeに変換してから、AddMonths(2)メソッドを呼び出す必要があります。このコードがcultureie.UK/US/Asiaなどのマシンでエラーなしで機能することを確認するにはどうすればよいですか?

4

2 に答える 2

2

DateTime.Parse には、CultureInfo を受け取るオーバーロードが必要です。

選択したカルチャ情報を渡す必要があります。マシンにインストールされているもの、またはアプリケーションのオプションや構成などでユーザーが選択したもの.

DateTime を取得したら、カルチャに関係なく AddMonths が機能するはずです。

正確なオーバーロードについて正確でなくて申し訳ありません。現在、Visual Studio の前にいるわけではありません。

于 2012-11-14T09:46:39.023 に答える
1

AddMonthsに間違ったカルチャを指定した場合に失敗するものではありませんDateTime.Parse。したがって、DtaeTime-String がどのカルチャまたは形式であるかを知る必要があります。そうでなければ、「2012 年 10 月 9 日」が 9 月なのか 10 月なのかを知ることは不可能です (František Žiačik が指摘したように)。

フォーマットが「28/09/2012」であると仮定すると、この機能を実現するにはどうすればよいですか

入力文字列が常に「dd/MM/yyyy」の形式であることがわかっている場合は、後で正しいカルチャを使用して適用できますDateTime.ParseExactToString

String input = "28/09/2012";
DateTime dt = DateTime.ParseExact(input, "dd/MM/yyyy", CultureInfo.InvariantCulture);
CultureInfo targetCulture = CultureInfo.CreateSpecificCulture("en-US");
String output = dt.AddMonths(2).ToString( targetCulture );

デモはこちら

于 2012-11-14T10:03:48.827 に答える