2010-09-27 76 views
5

Tôi đã có biến DateTime và tôi muốn chuyển đổi nó thành chuỗi "DD.MM.YYYY" Xin lưu ý, các giá trị phải được phân tách bằng dấu "chấm".Ngày giờ: cách hiển thị dưới dạng DD.MM.YYYY?

Tất nhiên tôi có thể thực hiện thành phần chuỗi thủ công. Nhưng tôi tự hỏi liệu tôi có thể sử dụng DateTime.ToString() để thực hiện chuyển đổi bắt buộc hay không.

Trả lời

13

Vâng, bạn có thể:

string formatted = dt.ToString("dd'.'MM'.'yyyy"); 

Bây giờ trong trường hợp này có dấu ngoặc kép không thực sự cần thiết, như custom date/time format strings không giải thích dấu chấm trong bất kỳ cách nào đặc biệt. Tuy nhiên, tôi muốn làm cho nó rõ ràng - nếu thay đổi '.' cho ':' chẳng hạn, sau đó trong khi được trích dẫn, nó sẽ ở lại với ký tự rõ ràng, nhưng không được xác định, nó sẽ là "dấu phân tách thời gian theo văn hóa cụ thể". Nó không hoàn toàn rõ ràng với tôi cho dù "." sẽ được hiểu là "dấu phân cách thập phân cụ thể theo văn hóa" hay không, do đó, trích dẫn. Bạn có thể cảm thấy đó là trên đầu trang, tất nhiên - đó hoàn toàn là quyết định của bạn.

Bạn thể cũng muốn xác định văn hóa bất biến, chỉ để loại bỏ bất kỳ dấu vết khác của sự nghi ngờ: ""

string formatted = dt.ToString("dd'.'MM'.'yyyy", CultureInfo.InvariantCulture); 

(Vào thời điểm đó có dấu ngoặc kép xung quanh chấm trở nên ít có liên quan, như là tách số thập phân trong văn hóa bất biến anyway)

+0

+1: Cảm ơn thông tin chi tiết về báo giá bất kỳ ý nghĩa nào của chúng trong trường hợp này. –

8

Có, bạn có thể sử dụng DateTime.ToString như thế này:

myDateVariable.ToString("dd.MM.yyyy"); 

Lưu ý rằng bạn phải sử dụng vốn MM ở đây, vì mm đánh giá để vài phút thay vì tháng.

2

Bạn có thể định dạng ngày như thế này:.

date.ToString("dd.MM.yyyy") 

Khi formatt số ing trong khoảng thời gian . sẽ thay đổi tùy thuộc vào số CultureInfo được sử dụng, nhưng không thay đổi khi định dạng ngày.

Nếu bạn đang xác minh mã của bạn chống lại sự cai trị phân tích mã CA1304: Specify CultureInfo bạn sẽ phải sử dụng các nền văn hóa bất biến mặc dù nó không quan trọng cho định dạng đặc biệt này:

date.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture) 
3

Dưới đây là một sự thay thế cho bạn:

DateTime.Now.ToString("d", new CultureInfo("de-DE")) 

Sử dụng của Đức . làm dấu phân cách ngày.

+1

Bạn có thực sự muốn mọi người đọc mã phải biết rằng mặc dù? Không phải là nó đơn giản hơn để đánh vần nó ra? –

+0

Ngoài ra, tôi tin rằng có thể ghi đè bất kỳ nền văn hóa nào bằng cài đặt của riêng bạn, vì vậy đó không phải là hành vi được đảm bảo. –

+0

lưu ý từ ** thay thế **, cảm ơn mọi người vẫn đứng đầu –

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