mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
Abstracted common "time ago" date string parsing logic
This commit is contained in:
@@ -14,5 +14,43 @@ namespace Jackett.Utils
|
||||
long unixTimeStampInTicks = (long)(unixTime * TimeSpan.TicksPerSecond);
|
||||
return new DateTime(unixStart.Ticks + unixTimeStampInTicks);
|
||||
}
|
||||
|
||||
// ex: "2 hours 1 day"
|
||||
public static DateTime FromTimeAgo(string str)
|
||||
{
|
||||
str = str.ToLowerInvariant();
|
||||
if (str.Contains("now"))
|
||||
{
|
||||
return DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
|
||||
}
|
||||
|
||||
var dateParts = str.Split(new char[0], StringSplitOptions.RemoveEmptyEntries);
|
||||
TimeSpan timeAgo = TimeSpan.Zero;
|
||||
for (var i = 0; i < dateParts.Length / 2; i++)
|
||||
{
|
||||
var val = ParseUtil.CoerceFloat(dateParts[i * 2]);
|
||||
var unit = dateParts[i * 2 + 1];
|
||||
if (unit.Contains("sec"))
|
||||
timeAgo += TimeSpan.FromSeconds(val);
|
||||
else if (unit.Contains("min"))
|
||||
timeAgo += TimeSpan.FromMinutes(val);
|
||||
else if (unit.Contains("hour"))
|
||||
timeAgo += TimeSpan.FromHours(val);
|
||||
else if (unit.Contains("day"))
|
||||
timeAgo += TimeSpan.FromDays(val);
|
||||
else if (unit.Contains("week"))
|
||||
timeAgo += TimeSpan.FromDays(val * 7);
|
||||
else if (unit.Contains("month"))
|
||||
timeAgo += TimeSpan.FromDays(val * 30);
|
||||
else if (unit.Contains("year"))
|
||||
timeAgo += TimeSpan.FromDays(val * 365);
|
||||
else
|
||||
{
|
||||
throw new Exception("TimeAgo parsing failed");
|
||||
}
|
||||
}
|
||||
|
||||
return DateTime.SpecifyKind(DateTime.Now - timeAgo, DateTimeKind.Local);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user