2011-08-09 48 views
14

Tại sao String.Format("/") được chuyển thành "-"?Tại sao String.Format chuyển đổi dấu gạch chéo về phía trước thành dấu trừ?

+5

Cộng đồng Stack Overflow là miễn phí và _encouraged_ để cải thiện câu hỏi theo khả năng tốt nhất của họ. Nếu bạn không thoải mái với điều này, Stack Overflow có lẽ không dành cho bạn. Vui lòng xem [FAQ] (http://stackoverflow.com/faq) ngay khi thuận tiện nhất. –

Trả lời

21

Tôi nghi ngờ bạn đang sử dụng biểu tượng / bên trong trình giữ chỗ {0}. Nó là một biểu tượng dành riêng được sử dụng như dấu phân cách datetime trong văn hóa đã cho. Bạn có thể thoát khỏi nó, như thế này:

string date = string.Format("{0:dd\\/MM\\/yyyy}", DateTime.Now); 
1

Có vẻ như người seperator ngày trong văn hóa của bạn là "-" thay vì "/". thấy msdnarticle

Chỉnh sửa này:

Bạn đã kiểm tra khu vực của bạn và cài đặt ngôn ngữ để đảm bảo bạn không có một tùy chọn được lựa chọn sử dụng "-".

enter image description here

+0

Định dạng ngày ngắn của tôi là 'yyyy-MM-dd', nhưng' String.Format ("/") 'vẫn trả về' "/" '. – Guffa

+0

@Guffa - Thú vị ... Có vẻ như tôi đã sủa nhầm cây –

6

Tôi cố gắng đó với tất cả các nền văn hóa có thể:

foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures)) { 
    Console.Write(String.Format(info, "/")); 
} 

Output:

//////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////////////////////////// 
////////////////////////////////// 

Vì vậy, điều đó không xảy ra bất cứ nơi nào.

+0

Haha, yêu đầu ra – SwDevMan81

13

Theo Custom Date and Time Format Strings, / đề cập đến dấu phân tách ngày của văn hóa. Vì vậy, bạn cần phải thoát khỏi nó. Bạn có thể sử dụng dấu gạch chéo ngược theo câu trả lời của Darin hoặc bạn có thể trích dẫn nó trong dấu nháy đơn. Ví dụ:

using System; 
using System.Globalization; 

class Test 
{ 
    static void Main() 
    { 
     DateTime date = DateTime.Now; 

     CultureInfo da = new CultureInfo("da"); 
     // Prints 09-08-2011 
     Console.WriteLine(string.Format(da, "{0:dd/MM/yyyy}", date)); 
     // Prints 09/08/2011 
     Console.WriteLine(string.Format(da, "{0:dd'/'MM'/'yyyy}", date)); 
     // Prints 09/08/2011 
     Console.WriteLine(string.Format(da, "{0:dd\\/MM\\/yyyy}", date)); 
    } 
} 
Các vấn đề liên quan