public static void Main(string[] args)
var vanatime = new VanadielTime(DateTimeOffset.Now.ToUnixTimeMilliseconds());
Console.WriteLine(vanatime.ToString());
Console.WriteLine(vanatime.SeasonOfYear);
public struct VanadielTime
private const long VanadielYearMilliseconds = 1244160000;
private const long VanadielSeasonMilliseconds = 311040000;
private const long VanadielMoonMilliseconds = 290304000;
private const long VanadielMonthMilliseconds = 103680000;
private const long VanadielWeekMilliseconds = 27648000;
private const long VanadielDayMilliseconds = 3456000;
private const long VanadielHourMilliseconds = 144000;
private const long VanadielMinuteMilliseconds = 2400;
private const long VanadielSecondMilliseconds = 40;
private const long VanadielTimeMilliseconds = 1102325760000;
private const long EarthTimeMilliseconds = 1009810800000;
private int m_dayOfMonth;
public VanadielTime(long time)
throw new ArgumentOutOfRangeException(nameof(time));
m_time = VanadielTimeMilliseconds;
m_year = (int)(m_time / VanadielYearMilliseconds);
m_month = (int)(m_time % VanadielYearMilliseconds / VanadielMonthMilliseconds);
m_dayOfMonth = (int)(m_time % VanadielMonthMilliseconds / VanadielDayMilliseconds);
m_hour = (int)(m_time % VanadielDayMilliseconds / VanadielHourMilliseconds);
m_minute = (int)(m_time % VanadielHourMilliseconds / VanadielMinuteMilliseconds);
m_second = (int)(m_time % VanadielMinuteMilliseconds / VanadielSecondMilliseconds);
m_dayOfWeek = (int)(m_time % VanadielWeekMilliseconds / VanadielDayMilliseconds);
m_dayOfYear = m_month * 30 + m_dayOfMonth;
m_season = (int)(m_time % VanadielYearMilliseconds / VanadielSeasonMilliseconds);
int test = (int)(m_time / VanadielDayMilliseconds);
int percent = 200 * (test % 84) / 84;
Console.WriteLine(Math.Abs(diff));
public int Year => m_year;
public int Month => m_month + 1;
public int DayOfMonth => m_dayOfMonth + 1;
public Day DayOfWeek => (Day)m_dayOfWeek;
public int Hour => m_hour;
public int Minute => m_minute;
public int Second => m_second;
public int DayOfYear => m_dayOfYear + 1;
public Season SeasonOfYear => (Season)m_season;
public bool IsFiresday => DayOfWeek == Day.Firesday;
public bool IsEarthsday => DayOfWeek == Day.Earthsday;
public bool IsWatersday => DayOfWeek == Day.Watersday;
public bool IsWindsday => DayOfWeek == Day.Windsday;
public bool IsIceday => DayOfWeek == Day.Iceday;
public bool IsLightningday => DayOfWeek == Day.Lightningday;
public bool IsLightsday => DayOfWeek == Day.Lightsday;
public bool IsDarksday => DayOfWeek == Day.Darksday;
public override string ToString() => $"{Month}/{DayOfMonth}/{Year}, {DayOfWeek}, {Hour.ToString("D2")}:{Minute.ToString("D2")}";