fix(core): Anchors delta min/max (#656)

This commit is contained in:
Kamron Batman 2021-07-11 15:20:34 -07:00 • committed by GitHub
parent c79a8a4002
commit b99d520019
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 3 deletions

View file

@ -36,7 +36,16 @@ namespace Server
DateTime ReadDateTime() => new(ReadLong(), DateTimeKind.Utc); DateTime ReadDateTime() => new(ReadLong(), DateTimeKind.Utc);
TimeSpan ReadTimeSpan() => new(ReadLong()); TimeSpan ReadTimeSpan() => new(ReadLong());
DateTime ReadDeltaTime() => new(ReadLong() + DateTime.UtcNow.Ticks, DateTimeKind.Utc);
DateTime ReadDeltaTime()
{
return ReadLong() switch
{
long.MinValue => DateTime.MinValue,
long.MaxValue => DateTime.MaxValue,
var delta => new DateTime(delta + DateTime.UtcNow.Ticks, DateTimeKind.Utc)
};
}
decimal ReadDecimal() => new(stackalloc int[4] { ReadInt(), ReadInt(), ReadInt(), ReadInt() }); decimal ReadDecimal() => new(stackalloc int[4] { ReadInt(), ReadInt(), ReadInt(), ReadInt() });
int ReadEncodedInt() int ReadEncodedInt()
{ {

View file

@ -41,7 +41,7 @@ namespace Server
var ticks = (value.Kind switch var ticks = (value.Kind switch
{ {
DateTimeKind.Local => value.ToUniversalTime(), DateTimeKind.Local => value.ToUniversalTime(),
DateTimeKind.Unspecified => value.ToLocalTime().ToUniversalTime(), DateTimeKind.Unspecified => value.ToLocalTime().ToUniversalTime(),
_ => value _ => value
}).Ticks; }).Ticks;
@ -49,10 +49,21 @@ namespace Server
} }
void WriteDeltaTime(DateTime value) void WriteDeltaTime(DateTime value)
{ {
if (value == DateTime.MinValue)
{
Write(long.MinValue);
return;
}
if (value == DateTime.MaxValue)
{
Write(long.MaxValue);
}
var ticks = (value.Kind switch var ticks = (value.Kind switch
{ {
DateTimeKind.Local => value.ToUniversalTime(), DateTimeKind.Local => value.ToUniversalTime(),
DateTimeKind.Unspecified => value.ToLocalTime().ToUniversalTime(), DateTimeKind.Unspecified => value.ToLocalTime().ToUniversalTime(),
_ => value _ => value
}).Ticks; }).Ticks;