2013-05-01 31 views

Trả lời

38

Nếu bạn cần điều này để chỉ ảnh hưởng đến một lĩnh vực cụ thể, hãy tạo loại chuyển đổi đầu tiên:

public class OnlyDateConverter : IsoDateTimeConverter 
{ 
    public OnlyDateConverter() 
    { 
     DateTimeFormat = "yyyy-MM-dd"; 
    } 
} 

và sau đó thêm thuộc tính này vào bất kỳ trường/thuộc tính nào bạn muốn điều này cho:

[JsonConverter(typeof(OnlyDateConverter))] 
+0

Rất đẹp. Tôi vừa mới viết cùng một thứ, nhưng mở rộng 'DateTimeConverterBase'. Điều này là sạch hơn nhiều! –

+0

Chính xác những gì tôi cần! Cảm ơn bạn rất nhiều Youssef! – RooSoft

+0

Rõ ràng bạn nên sử dụng '/' thay vì dấu gạch ngang vì lợi ích của một số trình duyệt cũ nhất định: http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html –

4

Hãy thử thêm dòng này để cấu hình Web API của bạn:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
    new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" }); 
+5

Điều đó sẽ có hiệu lực trên toàn cầu, không chỉ trên các trường "một số", theo yêu cầu. –

0

Câu trả lời của Yousesef với OnlyDateConverter là tốt nhất. Nhưng đây là một sự thay thế:

private DateTime _birthday; 
public string Birthday 
{ 
    get { return _birthday.ToString("yyyy-MM-dd"); } 
    set { 
      _birthday = DateTime.ParseExact(value, "yyyy-MM-dd", 
              CultureInfo.InvariantCulture); 
     } 
} 

Advantage - Bạn không cần phải để ràng buộc các thư viện Newtonsoft.Json đến các lớp học của bạn.

Bất lợi - Thuộc tính hiện được hiển thị dưới dạng chuỗi bất kỳ nơi nào bạn sử dụng, điều này có thể gây ra vấn đề riêng.

+0

Tôi đã xem xét cách tiếp cận đó, nhưng nó có thể không phải là tốt nhất khi tính toán có thể được tham gia giữa các ngày. Dù sao cũng cảm ơn! – RooSoft

+0

@RooSoft - Đồng ý. –

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