В моих C# моделях я использую и DateTime
и DateTimeOffset
, например:
class Foo
{
public DateTime Date { get; set; }
public DateTimeOffset CreationDate { get; set; }
}
Когда я сериализуюсь в JSON, я делаю это так:
Foo foo = new Foo();
foo.Date = DateTime.UtcNow;
foo.CreationDate = DateTime.UtcNow;
var isoDateTimeConverter = new IsoDateTimeConverter();
isoDateTimeConverter.DateTimeFormat = "yyyy'-'MM'-'dd";
var serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(isoDateTimeConverter);
JsonSerializer serializer = JsonSerializer.Create(serializerSettings);
serializer.Serialize(writer, foo);
Это будет производить JSON:
{
Date = "2019-02-26",
CreationDate = "2019-02-26"
}
И Date
, и CreationDate
сериализуются одинаково из-за IsoDateTimeConverter
Что я Мне бы хотелось сделать различие между сериализацией DateTime
и DateTimeOffset
Моя цель - получить это JSON:
{
Date = "2019-02-26",
CreationDate = "2019-02-26T12:03:00-03:00"
}
Как мне добиться this?
Дополнительная информация:
- Когда моя C# модель использует
DateTime
, я сохраняю ее как Date
в SQL Сервер - Когда моя C# модель использует
DateTimeOffset
, я сохраняю ее как DateTimeOffset
на SQL сервере - Я использую EF Code First