1

関数内に次のコード行があります。

String value = endDate.Value.ToString(dateFormatStr);
//endDate is a DateTime? object (returned from a LINQ to SQL query).

奇妙な動作が発生している特定のインスタンスでは、endDate の値は {10/2/2010 12:00:00 AM} です。ここに私の結果があります:

dateFormatStr="d" => value="10/2/2010" ("2" を期待します)
dateFormatStr="M" => value="10 月 2" ("10" を期待します)

4

5 に答える 5

3

あなたの結果はマイクロソフトの仕様に同意しました

日、月、年を取得するには、相対的なDateTimeプロパティを使用します

****編集済み****

このコードをチェックして、「d」文字が単独であるか、パターン文字列の一部であるかに応じて、その動作がどのように変化するかを確認します。

DateTime time = DateTime.Now;

// 'd' is part of a pattern expression: "d "
MessageBox.Show(time.ToString("d "));
// result: "24 "

// 'd' defines a specific pattern: "short date"
MessageBox.Show(time.ToString("d"));
//result : "24/08/2010"
于 2010-08-23T13:10:23.060 に答える
2

標準形式と一致する単一文字のカスタム形式を使用する場合は、形式の前に「%」を付ける必要があります。例えば:

endDate.Value.ToString("%d");

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiersを参照してください。

于 2010-08-23T14:35:36.313 に答える
1

このサイトを見てください。

これはまったく不規則ではありません。実際、日付には 1 文字の標準形式 ( here ) を使用しています。

期待どおりにフォーマットを分割したい場合は、ddandMMを使用するか、(これが必要な場合)DateTimeオブジェクトから整数値を取得します。

すなわち:

endDate.Value.Day
endDate.Value.Month
于 2010-08-23T13:09:10.437 に答える
0

一部のパターンには、ある種の短い名前があります。単一の文字名は、完全なパターンで使用されているものと同じですが、残念ながら意味が異なります。あなたはそれを発見したばかりです。

これは便利な別のサイトです。

于 2010-08-23T13:12:42.947 に答える
0

フォーマット文字列が間違っていると思います。「dd」と「MM」を試してください。

于 2010-08-23T13:09:06.850 に答える