LongToDateTimeConverter.cs 813 B

123456789101112131415161718192021222324
  1. using System;
  2. using System.Buffers.Text;
  3. using System.Text.Json;
  4. using System.Text.Json.Serialization;
  5. namespace wispro.sp.web.Utils
  6. {
  7. public class LongToDateTimeConverter : JsonConverter<DateTime>
  8. {
  9. public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
  10. {
  11. if (Utf8Parser.TryParse(reader.ValueSpan, out long value, out _))
  12. return DateTime.UnixEpoch.AddMilliseconds(value);
  13. throw new FormatException();
  14. }
  15. public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
  16. {
  17. writer.WriteStringValue(
  18. JsonEncodedText.Encode(((long) (value - DateTime.UnixEpoch).TotalMilliseconds).ToString()));
  19. }
  20. }
  21. }