DocumentDbは、Unixタイムスタンプ形式(1970年1月1日00:00 UTCからの秒数)でタイムスタンプ値を保存するため、プロパティを装飾する独自のコンバータを作成する必要があります。次に例を示します。
using System;
using Newtonsoft.Json;
namespace Converters
{
public class UnixDateTimeConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer,
object value, JsonSerializer serializer)
{
long seconds;
if (value is DateTime)
{
var dt = (DateTime)value;
seconds = !dt.Equals(DateTime.MinValue) ?
new DateTimeOffset(dt).ToUnixTimeSeconds() : long.MinValue;
}
else
{
throw new Exception("Expected date object value.");
}
writer.WriteValue(seconds);
}
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.None || reader.TokenType == JsonToken.Null)
return null;
if (reader.TokenType != JsonToken.Integer)
{
throw new Exception(
$"Unexpected token parsing date. Expected Integer, got {reader.TokenType}.");
}
var seconds = (long)reader.Value;
return DateTimeOffset.FromUnixTimeSeconds(seconds).DateTime;
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DateTime) || objectType == typeof(DateTime?);
}
}
}
ベアは心の中でこのコードは唯一の.NET 4.6で動作すること - それ以前のフレームワークを標的とするために、あなたは、変換を自分で行う必要があります。