private static DateTime ConvertMicroSecondsSinceEpochToDateTime(ProtoBuf.Common.SignedTimestamp protobufSignedTimestamp) { DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); long timeInMicroSecondsSinceEpoch = (long)protobufSignedTimestamp.Timestamp; long timeInTicksSinceEpoch = timeInMicroSecondsSinceEpoch * 10; return(epoch.Add(new TimeSpan(timeInTicksSinceEpoch))); }
public SignedTimestamp(ProtoBuf.Common.SignedTimestamp protobufSignedTimestamp) { Validation.NotNull(protobufSignedTimestamp, nameof(protobufSignedTimestamp)); _timestamp = ConvertMicroSecondsSinceEpochToDateTime(protobufSignedTimestamp); _version = protobufSignedTimestamp.Version; _messageDigest = protobufSignedTimestamp.MessageDigest.ToByteArray(); _chainDigest = protobufSignedTimestamp.ChainDigest.ToByteArray(); _chainDigestSkip1 = protobufSignedTimestamp.ChainDigestSkip1.ToByteArray(); _chainDigestSkip2 = protobufSignedTimestamp.ChainDigestSkip2.ToByteArray(); }
public void ShouldHandleNegativeTimestamp() { var signedUnixTimestamp = -1571630945999999; var unsignedUnixTimestamp = (ulong)signedUnixTimestamp; var protoBufSignedTimestamp = new ProtoBuf.Common.SignedTimestamp { Timestamp = unsignedUnixTimestamp }; var signedTimestamp = new SignedTimestamp(protoBufSignedTimestamp); string result = signedTimestamp.GetTimestamp().ToString(Format.RFC3339PatternMicro, DateTimeFormatInfo.InvariantInfo); Assert.AreEqual("1920-03-13T19:50:54.000001Z", result); }