JsonDateTimeConverter.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.Globalization;
  3. using System.Text.Json;
  4. using System.Text.Json.Serialization;
  5. namespace Jellyfin.Extensions.Json.Converters
  6. {
  7. /// <summary>
  8. /// Legacy DateTime converter.
  9. /// Milliseconds aren't output if zero by default.
  10. /// </summary>
  11. public class JsonDateTimeConverter : JsonConverter<DateTime>
  12. {
  13. /// <inheritdoc />
  14. public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
  15. {
  16. return reader.GetDateTime();
  17. }
  18. /// <inheritdoc />
  19. public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
  20. {
  21. if (value.Millisecond == 0)
  22. {
  23. // Remaining ticks value will be 0, manually format.
  24. writer.WriteStringValue(value.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffZ", CultureInfo.InvariantCulture));
  25. }
  26. else
  27. {
  28. writer.WriteStringValue(value);
  29. }
  30. }
  31. }
  32. }