From 99832642cebcce3f93b49004a1dd10def3fb227d Mon Sep 17 00:00:00 2001 From: Patrick Barron Date: Fri, 6 Oct 2023 14:18:56 -0400 Subject: Add TryParseDateTime and TryParseDateTimeExact to XmlReaderExtensions --- .../Extensions/XmlReaderExtensions.cs | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'MediaBrowser.Controller/Extensions') diff --git a/MediaBrowser.Controller/Extensions/XmlReaderExtensions.cs b/MediaBrowser.Controller/Extensions/XmlReaderExtensions.cs index 8e4b7c8594..cb239e3145 100644 --- a/MediaBrowser.Controller/Extensions/XmlReaderExtensions.cs +++ b/MediaBrowser.Controller/Extensions/XmlReaderExtensions.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Xml; using Jellyfin.Data.Enums; using MediaBrowser.Controller.Entities; +using Microsoft.Extensions.Logging; namespace MediaBrowser.Controller.Extensions; @@ -13,6 +14,52 @@ namespace MediaBrowser.Controller.Extensions; /// public static class XmlReaderExtensions { + /// + /// Parses a from the current node. + /// + /// The . + /// The to use on failure. + /// The parsed . + /// A value indicating whether the parsing succeeded. + public static bool TryReadDateTime(this XmlReader reader, ILogger logger, out DateTime value) + { + ArgumentNullException.ThrowIfNull(reader); + ArgumentNullException.ThrowIfNull(logger); + + var text = reader.ReadElementContentAsString(); + if (DateTime.TryParse( + text, + CultureInfo.InvariantCulture, + DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, + out value)) + { + return true; + } + + logger.LogWarning("Invalid date: {Date}", text); + return false; + } + + /// + /// Parses a from the current node. + /// + /// The . + /// The date format string. + /// The parsed . + /// A value indicating whether the parsing succeeded. + public static bool TryReadDateTimeExact(this XmlReader reader, string formatString, out DateTime value) + { + ArgumentNullException.ThrowIfNull(reader); + ArgumentNullException.ThrowIfNull(formatString); + + return DateTime.TryParseExact( + reader.ReadElementContentAsString(), + formatString, + CultureInfo.InvariantCulture, + DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, + out value); + } + /// /// Parses a from the xml node. /// -- cgit v1.2.3