1

Windows サービスで String が有効な DateTime 例外として認識されなかったが、コンソール アプリケーションで同じコードが正しく実行されている

Object max = cmd.ExecuteScalar();   //max will have 6/30/2012 12:00:00 AM 
DateTime currentDt = DateTime.Now;
currentDt = DateTime.ParseExact(max.ToString(), "M/d/yyyy h:mm:ss tt", CultureInfo.CurrentCulture.DateTimeFormat);                         //This Line Gives Error in WindowsService Only
StreamWriter sw = new StreamWriter("E:\\ram\\SampleService.txt", true);
sw.WriteLine(currentDt.ToString());
sw.Close();

システムの DateTime 形式の設定を英語に変更しました。Us Settings.ShortDatetime は M/d/yyyy で、Longtime は h:mm:ss tt です。

誰かがこの問題を解決するのを手伝ってくれますか?

4

4 に答える 4

0

あなたの SQL リクエストは戻りますか、DateTimeそれともString価値がありますか?

ParseExactまた、この場合になぜ使用するのかわかりません。あなたの場合、Parse メソッドをInvariantCultureパラメーターで使用することをお勧めします。

currentDt = DateTime.Parse(max.ToString(), CultureInfo.InvariantCulture);

値が DateTimeの場合、max解析を行う必要はまったくありません。DBNull.Value かどうかを確認するだけです。

if (max != DBNullValue)
{
    currentDt = (DateTime)max;
}
于 2012-11-21T08:05:24.737 に答える