微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

datetime.tryparse 总是返回 false

如何解决datetime.tryparse 总是返回 false

我正在学习 asp.net 课程,我是 c# 新手

我创建了一个具有日期输入字段的表单,它总是返回 无效消息 以下是输入代码

    <div class="form-group">
        @Html.LabelFor(m => m.Date)
        @Html.TextBoxFor(m => m.Date,new { @class = "form-control",placeholder="eg 1 Jan 2015" })
        @Html.ValidationMessageFor(m => m.Date)
    </div>

这是我为该输入字段创建的模型属性

[required]
[FutureDate]
public string Date { get; set; }

这是出现问题的futuredate数据注释的代码

public class FutureDate : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            DateTime dateTime;
            var isValid = DateTime.TryParseExact(Convert.ToString(value),"d MMM YYYY",CultureInfo.CurrentCulture,DateTimeStyles.None,out dateTime);
            return (isValid && dateTime > DateTime.Now);

        }
    }

虽然我在调试时注意到 datetime 变量没有更新 使用输入字段值并返回 {01/01/0001 12:00:00}

解决方法

年份说明符是小写的。请参阅 docs 以供参考。

var isValid = DateTime.TryParseExact(Convert.ToString(value),"d MMM yyyy",CultureInfo.CurrentCulture,DateTimeStyles.None,out dateTime);

工作示例:https://dotnetfiddle.net/BCQdJr

与非工作相比:https://dotnetfiddle.net/DIx7Jn

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。