From e3c7f3de283539abb7d0db1977eb38159d0c145a Mon Sep 17 00:00:00 2001 From: kaso17 Date: Tue, 1 Nov 2016 22:36:23 +0100 Subject: [PATCH] Add support for parsing AM/PM TimeSpans --- src/Jackett/Utils/DateTimeUtil.cs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Jackett/Utils/DateTimeUtil.cs b/src/Jackett/Utils/DateTimeUtil.cs index 6af596580..30ec864e3 100644 --- a/src/Jackett/Utils/DateTimeUtil.cs +++ b/src/Jackett/Utils/DateTimeUtil.cs @@ -75,6 +75,24 @@ namespace Jackett.Utils return DateTime.SpecifyKind(DateTime.Now - timeAgo, DateTimeKind.Local); } + public static TimeSpan ParseTimeSpan(string time) + { + TimeSpan offset = TimeSpan.Zero; + if (time.EndsWith("AM")) + { + time = time.Substring(0, time.Length - 2); + } + else if (time.EndsWith("PM")) + { + time = time.Substring(0, time.Length - 2); + offset = TimeSpan.FromHours(12); + } + + var ts = TimeSpan.Parse(time); + ts += offset; + return ts; + } + // Uses the DateTimeRoutines library to parse the date // http://www.codeproject.com/Articles/33298/C-Date-Time-Parser public static DateTime FromFuzzyTime(string str, DateTimeRoutines.DateTimeFormat format = DateTimeRoutines.DateTimeFormat.USA_DATE) @@ -112,7 +130,7 @@ namespace Jackett.Utils { var time = str.Replace(match.Groups[0].Value, ""); DateTime dt = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified); - dt += TimeSpan.Parse(time); + dt += ParseTimeSpan(time); return dt; } @@ -122,7 +140,7 @@ namespace Jackett.Utils { var time = str.Replace(match.Groups[0].Value, ""); DateTime dt = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified); - dt += TimeSpan.Parse(time); + dt += ParseTimeSpan(time); dt -= TimeSpan.FromDays(1); return dt; } @@ -133,7 +151,7 @@ namespace Jackett.Utils { var time = str.Replace(match.Groups[0].Value, ""); DateTime dt = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified); - dt += TimeSpan.Parse(time); + dt += ParseTimeSpan(time); dt += TimeSpan.FromDays(1); return dt; }