/// <summary> /// Reads a BSON DateTime from the reader. /// </summary> /// <returns>The number of milliseconds since the Unix epoch.</returns> public override long ReadDateTime() { if (disposed) { ThrowObjectDisposedException(); } VerifyBsonType("ReadDateTime", BsonType.DateTime); state = GetNextState(); return(buffer.ReadInt64()); }
/// <summary> /// Reads a BSON DateTime from the reader. /// </summary> /// <returns>The number of milliseconds since the Unix epoch.</returns> public override long ReadDateTime() { if (disposed) { ThrowObjectDisposedException(); } VerifyBsonType("ReadDateTime", BsonType.DateTime); state = GetNextState(); var value = buffer.ReadInt64(); if (value == BsonConstants.DateTimeMaxValueMillisecondsSinceEpoch + 1) { if (settings.FixOldDateTimeMaxValueOnInput) { value = BsonConstants.DateTimeMaxValueMillisecondsSinceEpoch; } } return(value); }
/// <summary> /// Reads a BSON DateTime from the reader. /// </summary> /// <returns>A DateTime.</returns> public override DateTime ReadDateTime() { if (disposed) { ThrowObjectDisposedException(); } VerifyBsonType("ReadDateTime", BsonType.DateTime); state = GetNextState(); long milliseconds = buffer.ReadInt64(); if (milliseconds == 253402300800000) { // special case to avoid ArgumentOutOfRangeException in AddMilliseconds return(DateTime.SpecifyKind(DateTime.MaxValue, DateTimeKind.Utc)); } else { return(BsonConstants.UnixEpoch.AddMilliseconds(milliseconds)); // Kind = DateTimeKind.Utc } }