static void Main(string[] args)
string json = @"{ ""Start"": ""2020-11-27T16:42:00.000+11:00""}";
Absense parsed = JsonConvert.DeserializeObject<Absense>(json);
[Newtonsoft.Json.JsonConverter(typeof(DatetimeJsonConverter))]
public DateTime Start { get; set; }
class DatetimeJsonConverter : JsonConverter<DateTime?>
public override DateTime? ReadJson(JsonReader reader, Type objectType, DateTime? existingValue, bool hasExistingValue, JsonSerializer serializer)
string value = reader.Value?.ToString();
Console.WriteLine($"{reader.Path}: {value}");
if (DateTimeOffset.TryParse(value, out DateTimeOffset timeOffset))
return new DateTime(timeOffset.Year, timeOffset.Month, timeOffset.Day, timeOffset.Hour, timeOffset.Minute, timeOffset.Second);
public override void WriteJson(JsonWriter writer, DateTime? value, JsonSerializer serializer)
writer.WriteValue(value.Value.ToString("s", System.Globalization.CultureInfo.InvariantCulture));