AbpDateTimeConverter.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using Abp.Timing;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Converters;
  5. namespace Abp.Json
  6. {
  7. public class AbpDateTimeConverter : IsoDateTimeConverter
  8. {
  9. public override bool CanConvert(Type objectType)
  10. {
  11. if (objectType == typeof(DateTime) || objectType == typeof(DateTime?))
  12. {
  13. return true;
  14. }
  15. return false;
  16. }
  17. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  18. {
  19. var date = base.ReadJson(reader, objectType, existingValue, serializer) as DateTime?;
  20. if (date.HasValue)
  21. {
  22. return Clock.Normalize(date.Value);
  23. }
  24. return null;
  25. }
  26. public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  27. {
  28. var date = value as DateTime?;
  29. base.WriteJson(writer, date.HasValue ? Clock.Normalize(date.Value) : value, serializer);
  30. }
  31. }
  32. }