首页 > 解决方案 > 字符串 '‎2019-04-01' 未被识别为有效的日期时间。或者如果尝试将其解析为 DateTime,则总是得到“假”

问题描述

在 Fluent Validation (.net core) 中将字符串转换为日期时间时出现异常

错误:System.FormatException:'String '‎2019-04-01' 未被识别为有效的 DateTime,或者如果尝试将其解析为 DateTime,则总是得到“假”。

请求有效载荷

{
    "opened": "‎2019-04-01"
}

流利的验证器规则

RuleFor(x => x.Opened).Must(BeAValidDate).WithMessage("Invalid Opened date");

类功能

public bool BeAValidDate(string value)
        {
            DateTime output;
            bool bOutput;
            //option 1
            bOutput = DateTime.TryParse(value, out output);

            //option 2
            //bOutput = DateTime.TryParseExact(value, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out output);

            //option 3
            //try
            //{
            //    output = DateTime.Parse(value);
            //    bOutput = true;
            //}
            //catch {
            //    bOutput = false;
            //}
            return bOutput;
        }

尝试了以上三个选项,但总是得到错误/异常。

奇怪的是,如果我传递静态值,那么它可以正常工作,例如,如果我传递变量而不是值,例如

string value = '2019-04-01';

提前致谢。

标签: datetimeasp.net-coreasp.net-web-apifluentvalidation

解决方案


谢谢大家的回复!我不确切知道实际问题是什么,但是当我在邮递员请求中手动输入日期时,它起作用了。


推荐阅读