提问者:小点点

如何返回日期或错误?C#.网


我试图从输入的日期返回格式为"dd/MM/yyyy"的日期。如果输入的日期具有以下格式:"dd-mm-yyyy",我想返回一个错误:"输入的日期格式无效。"我分享我的代码:

public class DateTimeConverterUsingDateTimeParse : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        Debug.Assert(typeToConvert == typeof(DateTime));

        return DateTime.ParseExact(reader.GetString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
    }
}

我试图执行以下操作,但这是不正确的,因为我必须返回一个DateTime变量:

public class DateTimeConverterUsingDateTimeParse : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        Debug.Assert(typeToConvert == typeof(DateTime));

        try
        {
            return DateTime.ParseExact(reader.GetString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
        }
        catch (Exception ex)
        {
            var error = "Date format error";
            return error;
        }
    }
}

我希望你能帮助我!谢啦


共1个答案

匿名用户

在本例中,您正在实现JsonConverter

public class DateTimeConverterUsingDateTimeParse : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        Debug.Assert(typeToConvert == typeof(DateTime));

        if (DateTime.TryParseExact(reader.GetString(), "dd/MM/yyyy", 
            CultureInfo.InvariantCulture, DateTimeStyles.None, out var result) 
        {
           return result;
        }
        else throw new JsonException();
    }
}

我使用TryParseExact,所以不需要捕捉异常。