2015-01-15 19 views
9

Tôi có chế độ xem lưới trên biểu mẫu của mình. Tôi ràng buộc nó với cùng một dữ liệu. Có một trường mẫu, mà tôi đã đề cập dưới đây.Tại sao định dạng ngày tự thay đổi khi thay đổi trình duyệt?

<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> 

Vấn đề của tôi là khi tôi chạy mẫu đơn này trên Mozilla, Opera, Chrome vv nó cho thấy các định dạng ngày (với xiên) dd/mm/yyyy, nhưng khi tôi chạy nó với ví dụ 10 nó cho thấy định dạng (với gạch nối) dd-mm-yyyy. tại sao?

Có ai có thể trợ giúp về điều này không?

+4

Tôi không nghĩ biểu diễn chuỗi của 'Ngày giờ 'có thể thay đổi dựa trên trình duyệt. Vì bạn không cung cấp bất kỳ 'IFormatProvider' nào, nó luôn sử dụng các thiết lập' CurrentCulture' của bạn. Nếu cài đặt văn hóa này giống nhau, thì các định dạng này sẽ giống nhau. Bạn có _really_ chắc chắn bạn đang chạy mã này trong cùng một cài đặt văn hóa không? –

+0

@ SonerGönül: Đồng ý với bạn về điều này, vậy tại sao nó chỉ thay đổi trong IE 10? –

+3

Tôi đề nghị bạn chẩn đoán điều này bằng cách đăng nhập 'CultureInfo.CurrentCulture' (hoặc bao gồm nó trong đầu ra trong một trang thử nghiệm). –

Trả lời

2

Tôi không thể kiểm tra ngay bây giờ, nhưng tôi đoán IE đang gửi tiêu đề "Chấp nhận ngôn ngữ" trong yêu cầu, khác với văn hóa hiện tại của bạn. Do đó, nó được trọng nền văn hóa hiện tại của ứng dụng (Văn hóa của WebServer/IIS) ...

Cố gắng thiết lập này trên bạn Web.config:

<configuration> 
    <system.web> 
     <globalization culture="en-GB" uiCulture="en-GB" /> 
    </system.web> 
</configuration> 

Đặt văn hóa mong muốn của bạn bên trong chìa khóa chính. (Nhưng văn hóa "en-GB" đã cung cấp định dạng ngày mong muốn).

Hope tôi đã giúp ...

+0

@Rahul đã giải quyết được sự cố của bạn chưa? – Vitox

0

Nếu bạn muốn ghi đè văn hóa sao cho định dạng luôn là 'dd/MM/yyyy' thì bạn có thể sử dụng như sau.

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

Dường như bạn muốn để buộc các delimiters trở thành một nhân vật cụ thể (ví dụ, một nhân vật '/') thay vì những gì văn hóa mặc định cung cấp. Đây có thể dễ dàng thực hiện bằng cách cứng mã hóa delimiters như literals trong chuỗi định dạng ngày của bạn, để wit:

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

Lưu ý việc bổ sung các dấu ngoặc kép xung quanh các nhân vật '/' delimiter.

Các vấn đề liên quan