Jackett/src/Jackett/Utils/DateTimeUtil.cs

57 lines
2.1 KiB
C#
Raw Normal View History

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);
}
// 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
}
}