【发布时间】:2022-01-17 00:17:46
【问题描述】:
我正在尝试从输入的日期返回格式为“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;
}
}
}
我希望你能帮助我!谢谢
【问题讨论】:
-
在 C# 中“返回错误”的正常方法是抛出异常。您不想这样做有什么特别的原因吗?
-
是的,我想象得到。我想简单地返回一个错误:“输入的日期格式不正确”@RB。
-
@GianfrancoGrigera 正如RB所说,您要么需要抛出异常,要么使用“任一”单子模式。例外会更干净。
-
完美!非常感谢!再来一问。如何返回异常?因为既然我在做,它对我不起作用。 @RichardDeeming
-
@GianfrancoGrigera 你没有返回异常;你抛出一个异常。 Exceptions and Exception Handling | Microsoft Docs