From dba033b5a50e1a0040ab4cb6582ec582426ede55 Mon Sep 17 00:00:00 2001 From: kaso17 Date: Wed, 2 Nov 2016 18:40:18 +0100 Subject: [PATCH] Add support for parsing unix Timestamps --- src/Jackett/Utils/DateTimeUtil.cs | 38 ++++++++++++++----------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/Jackett/Utils/DateTimeUtil.cs b/src/Jackett/Utils/DateTimeUtil.cs index 30ec864e3..3f9b6b7b8 100644 --- a/src/Jackett/Utils/DateTimeUtil.cs +++ b/src/Jackett/Utils/DateTimeUtil.cs @@ -75,24 +75,6 @@ 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) @@ -130,7 +112,7 @@ namespace Jackett.Utils { var time = str.Replace(match.Groups[0].Value, ""); DateTime dt = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified); - dt += ParseTimeSpan(time); + dt += TimeSpan.Parse(time); return dt; } @@ -140,7 +122,7 @@ namespace Jackett.Utils { var time = str.Replace(match.Groups[0].Value, ""); DateTime dt = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified); - dt += ParseTimeSpan(time); + dt += TimeSpan.Parse(time); dt -= TimeSpan.FromDays(1); return dt; } @@ -151,11 +133,25 @@ namespace Jackett.Utils { var time = str.Replace(match.Groups[0].Value, ""); DateTime dt = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified); - dt += ParseTimeSpan(time); + dt += TimeSpan.Parse(time); dt += TimeSpan.FromDays(1); return dt; } + try + { + // try parsing the str as an unix timestamp + var unixTimeStamp = long.Parse(str); + DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc); + dt = dt.AddSeconds(unixTimeStamp).ToLocalTime(); + return dt; + } + catch (FormatException) + { + // it wasn't a timestamp, continue.... + } + + // add missing year match = missingYearRegexp.Match(str); if (match.Success)