|
@@ -1005,7 +1005,7 @@ namespace Emby.XmlTv.Classes
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public static Regex _regDateWithOffset = new Regex(@"^(?<dateDigits>[0-9]{4,14})(\s(?<dateOffset>[+-]*[0-9]{1,4}))?$");
|
|
|
+ public const string _regDateWithOffset = @"^(?<dateDigits>[0-9]{4,14})(\s(?<dateOffset>[+-]*[0-9]{1,4}))?$";
|
|
|
|
|
|
public DateTimeOffset? ParseDate(string dateValue)
|
|
|
{
|
|
@@ -1018,50 +1018,47 @@ namespace Emby.XmlTv.Classes
|
|
|
'200007281733 BST', '200209', '19880523083000 +0300'. (BST == +0100.)
|
|
|
*/
|
|
|
|
|
|
- DateTimeOffset? result = null;
|
|
|
-
|
|
|
- if (!string.IsNullOrEmpty(dateValue))
|
|
|
+ if (string.IsNullOrEmpty(dateValue))
|
|
|
{
|
|
|
- var completeDate = "20000101000000";
|
|
|
- var dateComponent = string.Empty;
|
|
|
- var dateOffset = "+00:00";
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
- var match = _regDateWithOffset.Match(dateValue);
|
|
|
- if (match.Success)
|
|
|
+ var completeDate = "20000101000000";
|
|
|
+ var dateComponent = string.Empty;
|
|
|
+ var dateOffset = "+00:00";
|
|
|
+ var match = Regex.Match(dateValue, _regDateWithOffset);
|
|
|
+ if (match.Success)
|
|
|
+ {
|
|
|
+ dateComponent = match.Groups["dateDigits"].Value;
|
|
|
+ if (!string.IsNullOrEmpty(match.Groups["dateOffset"].Value))
|
|
|
{
|
|
|
- dateComponent = match.Groups["dateDigits"].Value;
|
|
|
- if (!string.IsNullOrEmpty(match.Groups["dateOffset"].Value))
|
|
|
+ dateOffset = match.Groups["dateOffset"].Value; // Add in the colon to ease parsing later
|
|
|
+ if (dateOffset.Length == 5)
|
|
|
{
|
|
|
- dateOffset = match.Groups["dateOffset"].Value; // Add in the colon to ease parsing later
|
|
|
- if (dateOffset.Length == 5)
|
|
|
- {
|
|
|
- dateOffset = dateOffset.Insert(3, ":"); // Add in the colon to ease parsing later
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- dateOffset = "+00:00";
|
|
|
- }
|
|
|
+ dateOffset = dateOffset.Insert(3, ":"); // Add in the colon to ease parsing later
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ dateOffset = "+00:00";
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // Pad out the date component part to 14 characaters so 2016061509 becomes 20160615090000
|
|
|
- if (dateComponent.Length < 14)
|
|
|
- {
|
|
|
- dateComponent = dateComponent + completeDate.Substring(dateComponent.Length, completeDate.Length - dateComponent.Length);
|
|
|
- }
|
|
|
+ // Pad out the date component part to 14 characaters so 2016061509 becomes 20160615090000
|
|
|
+ if (dateComponent.Length < 14)
|
|
|
+ {
|
|
|
+ dateComponent = dateComponent + completeDate.Substring(dateComponent.Length, completeDate.Length - dateComponent.Length);
|
|
|
+ }
|
|
|
|
|
|
- var standardDate = string.Format("{0} {1}", dateComponent, dateOffset);
|
|
|
- if (DateTimeOffset.TryParseExact(standardDate, "yyyyMMddHHmmss zzz", CultureInfo.CurrentCulture, DateTimeStyles.None, out var parsedDateTime))
|
|
|
- {
|
|
|
- return parsedDateTime.ToUniversalTime();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //Logger.LogWarning("Unable to parse the date {0} from standardised form {1}", dateValue, standardDate);
|
|
|
- }
|
|
|
+ var standardDate = string.Format("{0} {1}", dateComponent, dateOffset);
|
|
|
+ if (DateTimeOffset.TryParseExact(standardDate, "yyyyMMddHHmmss zzz", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTimeOffset parsedDateTime))
|
|
|
+ {
|
|
|
+ return parsedDateTime.ToUniversalTime();
|
|
|
}
|
|
|
|
|
|
- return result;
|
|
|
+ // Logger.LogWarning("Unable to parse the date {0} from standardised form {1}", dateValue, standardDate);
|
|
|
+
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
public string StandardiseDate(string value)
|
|
@@ -1070,7 +1067,7 @@ namespace Emby.XmlTv.Classes
|
|
|
var dateComponent = string.Empty;
|
|
|
var dateOffset = "+0000";
|
|
|
|
|
|
- var match = _regDateWithOffset.Match(value);
|
|
|
+ var match = Regex.Match(value, _regDateWithOffset);
|
|
|
if (match.Success)
|
|
|
{
|
|
|
dateComponent = match.Groups["dateDigits"].Value;
|