2
0

DateTimeTypeConverter.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.ComponentModel;
  3. using System.Globalization;
  4. namespace Jellyfin.Api.TypeConverters
  5. {
  6. /// <summary>
  7. /// Custom datetime parser.
  8. /// </summary>
  9. public class DateTimeTypeConverter : TypeConverter
  10. {
  11. /// <inheritdoc />
  12. public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
  13. {
  14. if (sourceType == typeof(string))
  15. {
  16. return true;
  17. }
  18. return base.CanConvertFrom(context, sourceType);
  19. }
  20. /// <inheritdoc />
  21. public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
  22. {
  23. if (value is string dateString)
  24. {
  25. // Mark Played Item.
  26. if (DateTime.TryParseExact(dateString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out var dateTime))
  27. {
  28. return dateTime;
  29. }
  30. // Get Activity Logs.
  31. if (DateTime.TryParse(dateString, null, DateTimeStyles.RoundtripKind, out dateTime))
  32. {
  33. return dateTime;
  34. }
  35. }
  36. return base.ConvertFrom(context, culture, value);
  37. }
  38. }
  39. }