Sau khi một số digging và tôi đã kết thúc việc thiết Thread
's CurrentCulture giá trị để có CultureInfo ( 'en-US') trong phương pháp hành động của bộ điều khiển:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
Dưới đây là một số tùy chọn khác nếu bạn muốn có cài đặt này trên mọi chế độ xem.
Về CurrentCulture
giá trị tài sản:
Các CultureInfo đối tượng được trả về bởi thuộc tính này, cùng với các đối tượng liên quan, xác định dạng mặc định cho những ngày, thời gian, số lượng, giá trị tiền tệ, thứ tự sắp xếp của văn bản, công ước vỏ, và so sánh chuỗi.
Nguồn: MSDN CurrentCulture
Lưu ý:CurrentCulture
Cài đặt thuộc tính trước đó có thể là tùy chọn nếu bộ điều khiển đã chạy với CultureInfo("en-US")
hoặc tương tự với định dạng ngày"MM/dd/yyyy"
.
Sau khi đặt thuộc CurrentCulture
tính, hãy thêm khối mã để chuyển ngày sang "M/d/yyyy"
định dạng trong dạng xem:
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
Bên trên @shortDateLocalFormat
biến được định dạng với ToString("M/d/yyyy")
các tác phẩm. Nếu ToString("MM/dd/yyyy")
được sử dụng, giống như tôi đã làm đầu tiên thì bạn sẽ gặp phải vấn đề số 0 hàng đầu . Cũng giống như đề xuất của Tommy cũng ToString("d")
hoạt động. Trên thực tế "d"
là viết tắt của "Mẫu ngày ngắn" và có thể được sử dụng với các định dạng văn hóa / ngôn ngữ khác nhau.
Tôi đoán khối mã từ trên cũng có thể được thay thế bằng một số phương pháp trợ giúp thú vị hoặc tương tự.
Ví dụ
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
có thể được sử dụng với cuộc gọi trợ giúp này
@DateFormatter(Model.AuditDate)
Cập nhật , tôi phát hiện ra rằng có một cách thay thế để làm điều tương tự khi phương thức DateTime.ToString (String, IFormatProvider) được sử dụng. Khi phương pháp này được sử dụng sau đó không cần phải sử dụng Thread
's CurrentCulture
tài sản. Giá trị CultureInfo("en-US")
được truyền dưới dạng đối số thứ hai -> IFormatProvider cho DateTime.ToString(String, IFormatProvider)
phương thức.
Phương thức trợ giúp đã sửa đổi:
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
}
@shortDateLocalFormat
}
.NET Fiddle
No overload for method 'ToString' takes 1 arguments