3

そこの。SQLServer からデータを取得するための単純なインターフェイスを開発しており、関数を使用していますDateTime.ToString(String)

実際のコードはDP.Value.ToString("yyyy-MM-dd HH:mm:00")で、DP は DateTimePicker コントロールです。

自分のラップトップでテストしている間、すべて正常に動作します。しかし、コンパイルしたコードを別の PC に移動すると、結果が異なります。2013-03-27 22:02例: からに渡され2013-03-27 22.02、「.」が置き換えられます。時間に「:」を使用します。しかし、SQLServer が無効な日付を生成するため、アプリをクラッシュさせるにはこれで十分です。

犯人は何ですか?どちらの PC にも SQLServer 2008 R2 (および同じ照合順序) と .NET Framework 4.0 Client Profile がインストールされています。私が見た違いは、私のSQLServerには英語(米国)の言語プロパティがあり、もう一方にはイタリア語が設定されていることですが、フォーマット文字列でそれを克服する必要がありました...

4

2 に答える 2

3

カルチャを指定していないため、現在のカルチャが使用されています。もう一方のシステムでは、「。」":" ではなく、時刻指定子に使用されます。

ただし、カルチャを明示的に指定して、これを回避できます。

var str = DP.Value.ToString("yyyy-MM-dd HH:mm:00", CultureInfo.InvariantCulture);

そうは言っても、パラメーター化されたクエリを使用して値を として保持することはDateTime、日付を文字列として渡すよりも良い習慣です。

于 2013-03-27T21:16:20.040 に答える
2

犯人は何ですか?

ユーザーのカルチャ設定。

一部のカルチャでは、時間区切り記号に が使用.:れます。

解決?

一貫性を確保するためにCultureInfo.InvariantCulture(または選択した) を使用します。CultureInfo

DP.Value.ToString("yyyy-MM-dd HH:mm:00", CultureInfo.InvariantCulture)
于 2013-03-27T21:15:51.917 に答える