私がこれを使用している場合:
DateTime.Now.Date.ToString("yyyy-MM-dd")
FXCop は、私が CA1305 に違反していると不平を言い、IFormatProvider を提供する必要があると言います。する必要がありますか?とにかく、特定の形式で日付を求めています(これは、XMLに入れることが期待される形式です)。
フォーマットプロバイダーを提供することで何か違いはありますか? この場合、実際に間違った結果が生じる可能性はありますか?
私がこれを使用している場合:
DateTime.Now.Date.ToString("yyyy-MM-dd")
FXCop は、私が CA1305 に違反していると不平を言い、IFormatProvider を提供する必要があると言います。する必要がありますか?とにかく、特定の形式で日付を求めています(これは、XMLに入れることが期待される形式です)。
フォーマットプロバイダーを提供することで何か違いはありますか? この場合、実際に間違った結果が生じる可能性はありますか?
フォーマットプロバイダーを指定したくないのはなぜですか?
それが単なる怠惰である場合は、2 つのスニペットを定義することをお勧めします。CultureInfo.InvariantCulture の場合はic、CultureInfo.CurrentCulture の場合はccです。
文字列への変換が既定のカルチャでどのように機能するかについて、何も想定しないでください。世界中の誰もがグレゴリオ暦を使用しているわけではありません。ある日、別のカレンダーをデフォルトとして使用しているコンピューターを使用して請負業者を顧客に雇うと、正しい XML を生成できなくなります。次に、FxCop の推奨事項に従いたくないことをお客様に説明します。
最善の方法は、.Net に Xml カルチャが含まれている場合です。それからあなたはただすることができます
DateTime.Today.ToString("d", CultureInfo.Xml)
何らかの理由で、Microsoft はXmlConvertの代わりに別のクラスを作成することを選択しました。このクラスは .Net 1.0 から存在しています。
XmlConvert.ToString(DateTime.Today, "yyyy-MM-dd")
常に正しい Xml 日付を作成します。
バグなのか意図した動作なのかは不明ですがXmlConvert.ToString(DateTime.Today, "d")
、有効な Xml 日付は作成されません。
そのため、もう少し調査した結果、私の場合は何の違いもないようですが、一般的な場合、月は特定のロケールで表示される可能性があります。
詳細はこちら: