2009-04-24 48 views
8

Tôi gặp phải một hành vi lạ của C#. một số điều của nó như thế này ..Định dạng ngày giờ trong C#

var date = DateTime.Now.ToString("MM/dd/yyyy"); 

tôi mong đợi ra là

04/24/2009 

nhưng trong actuall trở về của nó

04-24-2009 

và văn hóa hệ điều hành của tôi là en-GB, tôi sử dụng .Net 3.5 và WPF

bất kỳ giải pháp nào, vui lòng ... ???

+0

Bạn đã từng bước qua mã và hoàn thành "QuickWatch" trên DateTime.Now.ToString() đó chưa? – Tacoman667

+0

Nếu bạn đang sử dụng "en-GB", bạn nên sử dụng định dạng ngày "dd/MM/yyyy". Đối với định dạng ngày "MM/dd/yyyy" ở Hoa Kỳ, bạn nên sử dụng "en-US". – JeeBee

Trả lời

18

Theo các tài liệu MSDN cho ngày tuỳ chỉnh và định dạng chuỗi thời gian, / là một giữ chỗ:

Đại diện cho tách ngày được xác định trong hiện tại DateTimeFormatInfo.DateSeparator tài sản. Dấu tách này được sử dụng để phân biệt năm, tháng và ngày.

Nếu bạn muốn có một dấu gạch chéo nhất định, sử dụng "MM '/' dd '/' yyyy":

DateTime.Now.ToString("MM'/'dd'/'yyyy") 
3

Nó sử dụng dấu phân cách được thiết lập trong cài đặt khu vực, vì "/" là ký tự thay thế cho dấu phân cách.

Bạn có thể tạo phiên bản DateTimeFormat của riêng mình bằng các trình tách khác nhau.

2

Thử gọi ToString hành kể từ ngày chính nó và đi qua các đối tượng CultureInfo.InvariantCulture:

string date = yourDate.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)); 
Các vấn đề liên quan