0
objTour.tourStartDate = 
    Convert.ToDateTime(
        DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
            .ToString("MM/dd/yyyy"));

どこでtxtTourStartDate.Text="16/08/2012"

これに関連するすべての投稿を検索して読みました。

4

3 に答える 3

4

カスタムの日付形式の文字列で/は、リテラル文字ではなく、カルチャ固有の日付区切り文字を示し/ます。したがって、コードの結果は、ユーザー(またはサーバー)のローカリゼーション設定によって異なります。

コードをカルチャ固有の設定から独立させるには、次の2つのオプションがあります。

  • 日付区切り文字としてスラッシュを使用するカルチャを明示的に指定します。例:

    DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", 
                        CultureInfo.InvariantCulture)
    
  • またはキャラクターをエスケープします、例えば

    DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null)
    

    (とに注意して@ ください\

どちらも望ましい結果をもたらすはずです。

于 2012-08-31T05:43:09.827 に答える
2

不要な変換をたくさん行っていますが、元のコードは機能します。(DateTime-> ToString-> ToDateTime)本当の問題InvariantCultureです。あなたは試してみるnullために合格しているので。CultureInfoCultureInfo.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)
于 2012-08-31T05:53:05.607 に答える
2

これで十分です:

objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text, 
                                            "dd/MM/yyyy", 
                                            CultureInfo.InvariantCulture);
于 2012-08-31T05:41:23.660 に答える