c#
  • asp.net
  • date
  • 2015-01-15 10 views 9 likes 
    9

    私は自分のフォームにグリッドビューを持っています。私は同じデータでバインドしています。テンプレートフィールドがありますが、これについては後述します。ブラウザを変更すると、日付形式が変更されるのはなぜですか?

    <asp:TemplateField HeaderText="To"> 
        <itemtemplate> 
        <asp:Label ID="Label2" runat="server" 
         Text='<%# Convert.ToDateTime(Eval("Leave_To")).ToString("dd/MM/yyyy") %>'></asp:Label> 
        </itemtemplate> 
        <headerstyle horizontalalign="Left" /> 
        <itemstyle horizontalalign="Left" /> 
    </asp:TemplateField> 
    

    私の問題はdd/mm/yyyy私はMozillaの、オペラ、クロームなどにこのフォームを実行すると、それは(斜め付き)、日付のフォーマットを示していることですが、私は、すなわち10でそれを実行すると、それは(ハイフン)形式を示しdd-mm-yyyy。どうして?

    誰でもこれを助けることができますか?

    +4

    私は 'DateTime'の文字列表現がブラウザに基づいて変わるかもしれないと思います。あなたが 'IFormatProvider'を提供しなかったので、常にあなたの' CurrentCulture'設定を使います。このカルチャの設定が同じ場合、これらの形式も同じにする必要があります。同じ文化設定でこのコードを実行していますか? –

    +0

    @SonerGönül:これであなたに同意してください。なぜIE 10でのみ変更されるのですか? –

    +3

    これは、 'CultureInfo.CurrentCulture'を記録することで診断することをお勧めします(または、テストページの出力にそれを組み込む)。 –

    答えて

    2

    私は今それをテストすることはできませんが、私はIEが現在の文化の異なる要求で「Accept-Language」ヘッダに、送信していると思います。したがって、それはアプリケーション(WebServerの/ IISの文化)の現在の文化をオーバーライドしている...

    はあなたのWeb.configでこれを設定してください:

    内部ご希望の文化を設定し
    <configuration> 
        <system.web> 
         <globalization culture="en-GB" uiCulture="en-GB" /> 
        </system.web> 
    </configuration> 
    

    主キー(しかし、文化 "en-GB"はすでに望ましい日付形式を提供しています)。

    希望私はあなたの代わりに、デフォルトの文化が提供するもので、特定の文字(すなわち、'/'文字)であることを区切り文字を強制したいように見えます...

    +0

    @Rahulはあなたの問題を解決しましたか? – Vitox

    0

    フォーマットが常に 'dd/MM/yyyy'になるようにカルチャを上書きする場合は、次のようにします。

    Convert.ToDateTime(Eval("Leave_To")).ToString("dd/MM/yyyy", DateTimeFormatInfo.InvariantInfo) 
    
    0

    を助けました。これは、簡単にウィットに、あなたの日付の書式文字列でリテラルとして区切り文字をハードコーディングすることによって達成される:

    foo.ToString("dd'/'MM'/'yyyy") 
    

    '/'区切り文字を囲む引用符を追加。

    関連する問題