2008-08-03 44 views
14

Cách tốt nhất để bản địa hóa bộ mô tả định dạng ngày là gì?Mô tả định dạng ngày địa phương

Vì bất kỳ ai từ một nền văn hóa không sử dụng định dạng dd/mm/yyyy đều biết, thật khó chịu khi phải nhập ngày theo định dạng này. Khuôn khổ .NET cung cấp một số hỗ trợ nội địa hóa rất tốt, vì vậy nó không quan trọng để phân tích ngày theo văn hóa người dùng, nhưng bạn cũng muốn hiển thị gợi ý hữu ích theo định dạng được yêu cầu (đặc biệt để phân biệt giữa yyyy và yyyy có thể hoán đổi trong hầu hết các nền văn hóa). Cách tốt nhất để thực hiện điều này theo cách có ý nghĩa với hầu hết người dùng (ví dụ: dd/M/yyy gây nhầm lẫn vì sự thay đổi trong trường hợp và chuyển đổi giữa một và hai chữ cái).

Trả lời

2

Đây là phương pháp hiện tại của tôi. Bất kỳ đề xuất?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)"); 
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)"); 
CultureInfo currentCulture = CultureInfo.CurrentUICulture; 

// If the culture is netural there is no date pattern to use, so use the default. 
if (currentCulture.IsNeutralCulture) 
{ 
    currentCulture = CultureInfo.InvariantCulture; 
} 

// Massage the format into a more general user friendly form. 
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower(); 
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm"); 
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd"); 
1

Cách cung cấp định dạng (mm/dd/yyyy hoặc dd/mm/yyyy), sau đó là bản in ngày hôm nay trong nền văn hóa của người dùng. MSDN có một bài viết trên formatting a DateTime for the person's culture, sử dụng đối tượng CultureInfo có thể hữu ích khi thực hiện việc này. Một sự kết hợp của các định dạng (mà hầu hết mọi người đã quen thuộc) kết hợp với ngày hiện tại được đại diện trong định dạng đó nên là đủ của một đầu mối cho người về cách họ nên nhập ngày. (Cũng bao gồm một kiểm soát lịch cho những người vẫn không thể tìm ra nó).

6

Just use ISO-8601. Đó là một tiêu chuẩn quốc tế.

Date and time (current at page generation) expressed according to ISO 8601: 
Date:       2014-07-05 
Combined date and time in UTC: 2014-07-05T04:00:25+00:00 
           2014-07-05T04:00:25Z 
Week:       2014-W27 
Date with week number:   2014-W27-6 
Ordinal date:     2014-186 
1

Sự cố với tiêu chuẩn quốc tế là rất nhiều người không sử dụng chúng. Tôi cố gắng ở nơi có thể, nhưng tôi buộc phải sử dụng dd/mm/yyyy hầu như ở khắp mọi nơi trong cuộc sống thực, có nghĩa là tôi đã quen với nó luôn luôn là một quá trình có ý thức để sử dụng ISO-8601. Đối với phần lớn những người thậm chí không cố gắng sử dụng ISO-8601, nó thậm chí còn tồi tệ hơn. Nếu bạn có thể quốc tế hóa nơi bạn có thể, tôi nghĩ đó là một lợi thế lớn.

4

Tôi phải đồng ý với những ngày 'sai' của OP thực sự làm việc với việc nuôi dạy DD/MM/YYYY và tôi thấy ngày và giờ ISO 8601 cực kỳ dễ làm việc. Đối với một khi tiêu chuẩn đã đúng và engtech có câu trả lời rõ ràng không yêu cầu bản địa hóa.

Tôi sẽ báo cáo biểu mẫu nhập ngày sinh trên ngăn xếp ngăn xếp dưới dạng lỗi do phần lớn ngón tay cái của phần lớn thế giới.

1

Biểu mẫu ngắn thuận tiện và giúp tránh lỗi chính tả. Bản địa hóa là có thể áp dụng, nhưng hãy chắc chắn để hiển thị định dạng mong đợi (không để người dùng bị mù). Cung cấp kiểm soát bộ chọn ngày làm một phụ tùy chọn phụ tá để điền vào trường này.

Như một phân tích thêm, on-the-fly và hiển thị của ngày ở dạng dài có thể giúp quá.

0

Tùy chọn tốt nhất: Thay vào đó, tôi khuyên bạn nên sử dụng bộ chọn ngày tiêu chuẩn.

Thay thế: mỗi lần nội dung của điều khiển chỉnh sửa thay đổi, phân tích cú pháp và hiển thị (trong điều khiển riêng?) Định dạng dài của ngày (ví dụ: nhập "03/04/09" hiển thị " : Ngày 4 tháng 3 năm 2009 ")

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