40 lines
1.1 KiB
C#
40 lines
1.1 KiB
C#
using Newtonsoft.Json;
|
|
|
|
namespace YLErp.Converter2
|
|
{
|
|
public class IsoDateTimeConverter : JsonConverter<DateTime>
|
|
{
|
|
public IsoDateTimeConverter() { }
|
|
public IsoDateTimeConverter(string format)
|
|
{
|
|
DateTimeFormat = format;
|
|
}
|
|
public string DateTimeFormat { get; set; } = "yyyy/MM/dd";
|
|
public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue, JsonSerializer serializer)
|
|
{
|
|
var value = reader.Value?.ToString();
|
|
if (string.IsNullOrEmpty(value))
|
|
{
|
|
return existingValue;
|
|
}
|
|
else
|
|
{
|
|
if (DateTime.TryParse(value, out var date))
|
|
{
|
|
return date;
|
|
}
|
|
else
|
|
{
|
|
return existingValue;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer)
|
|
{
|
|
writer.WriteValueAsync(value.ToString(DateTimeFormat)).Wait();
|
|
}
|
|
}
|
|
}
|