2015-07-19 17:18:54 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Jackett.Utils
|
|
|
|
|
{
|
|
|
|
|
public static class DateTimeUtil
|
|
|
|
|
{
|
|
|
|
|
public static DateTime UnixTimestampToDateTime(double unixTime)
|
|
|
|
|
{
|
|
|
|
|
DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
|
|
|
|
|
long unixTimeStampInTicks = (long)(unixTime * TimeSpan.TicksPerSecond);
|
|
|
|
|
return new DateTime(unixStart.Ticks + unixTimeStampInTicks);
|
|
|
|
|
}
|
2015-07-23 05:16:13 +00:00
|
|
|
|
|
|
|
|
|
// 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);
|
|
|
|
|
}
|
2015-07-19 17:18:54 +00:00
|
|
|
|
}
|
|
|
|
|
}
|