objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
.ToString("MM/dd/yyyy"));
どこでtxtTourStartDate.Text="16/08/2012"
。
これに関連するすべての投稿を検索して読みました。
objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
.ToString("MM/dd/yyyy"));
どこでtxtTourStartDate.Text="16/08/2012"
。
これに関連するすべての投稿を検索して読みました。
カスタムの日付形式の文字列で/
は、リテラル文字ではなく、カルチャ固有の日付区切り文字を示し/
ます。したがって、コードの結果は、ユーザー(またはサーバー)のローカリゼーション設定によって異なります。
コードをカルチャ固有の設定から独立させるには、次の2つのオプションがあります。
日付区切り文字としてスラッシュを使用するカルチャを明示的に指定します。例:
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture)
またはキャラクターをエスケープします、例えば
DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null)
(とに注意して@
ください)\
。
どちらも望ましい結果をもたらすはずです。
不要な変換をたくさん行っていますが、元のコードは機能します。(DateTime-> ToString-> ToDateTime)、本当の問題はInvariantCulture
です。あなたは試してみるnull
ために合格しているので。CultureInfo
CultureInfo.InvariantCulture
元のコード:
objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)
.ToString("MM/dd/yyyy"));
より良いものは次のようになります。
objTour.tourStartDate =
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)
これで十分です:
objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text,
"dd/MM/yyyy",
CultureInfo.InvariantCulture);