public virtual void encodeScaledTimestamp(DateTime val)
{
if (val == null)
{
write(edsNull);
return;
}
TimeSpan delta = val.ToUniversalTime() - baseDate;
long nanos = delta.Ticks * NANOSECONDS_PER_TICK;
int scale = NANOSECONDS_SCALE;
int count = byteCount(nanos);
write(edsScaledTimestampLen1 + count - 1);
write(scale);
for (int shift = (count - 1) * 8; shift >= 0; shift -= 8)
{
write((int)(nanos >> shift));
}
}