|
|
@@ -2,12 +2,13 @@ |
|
|
|
|
|
|
|
namespace Discord |
|
|
|
{ |
|
|
|
//Source: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/DateTimeOffset.cs |
|
|
|
internal static class DateTimeUtils |
|
|
|
{ |
|
|
|
#if !NETSTANDARD1_3 |
|
|
|
//https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/DateTimeOffset.cs |
|
|
|
private const long UnixEpochTicks = 621355968000000000; |
|
|
|
private const long UnixEpochSeconds = 62135596800; |
|
|
|
private const long UnixEpochTicks = 621_355_968_000_000_000; |
|
|
|
private const long UnixEpochSeconds = 62_135_596_800; |
|
|
|
private const long UnixEpochMilliseconds = 62_135_596_800_000; |
|
|
|
#endif |
|
|
|
|
|
|
|
public static DateTimeOffset FromSnowflake(ulong value) |
|
|
@@ -29,12 +30,12 @@ namespace Discord |
|
|
|
return new DateTimeOffset(ticks, TimeSpan.Zero); |
|
|
|
#endif |
|
|
|
} |
|
|
|
public static DateTimeOffset FromUnixMilliseconds(long seconds) |
|
|
|
public static DateTimeOffset FromUnixMilliseconds(long milliseconds) |
|
|
|
{ |
|
|
|
#if NETSTANDARD1_3 |
|
|
|
return DateTimeOffset.FromUnixTimeMilliseconds(seconds); |
|
|
|
return DateTimeOffset.FromUnixTimeMilliseconds(milliseconds); |
|
|
|
#else |
|
|
|
long ticks = seconds * TimeSpan.TicksPerMillisecond + UnixEpochTicks; |
|
|
|
long ticks = milliseconds * TimeSpan.TicksPerMillisecond + UnixEpochTicks; |
|
|
|
return new DateTimeOffset(ticks, TimeSpan.Zero); |
|
|
|
#endif |
|
|
|
} |
|
|
@@ -53,8 +54,8 @@ namespace Discord |
|
|
|
#if NETSTANDARD1_3 |
|
|
|
return dto.ToUnixTimeMilliseconds(); |
|
|
|
#else |
|
|
|
long seconds = dto.UtcDateTime.Ticks / TimeSpan.TicksPerMillisecond; |
|
|
|
return seconds - UnixEpochSeconds; |
|
|
|
long milliseconds = dto.UtcDateTime.Ticks / TimeSpan.TicksPerMillisecond; |
|
|
|
return milliseconds - UnixEpochMilliseconds; |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|