在C#中使用TryParseExact将字符串解析为DateTime

编程入门 行业动态 更新时间:2024-10-19 03:25:07
本文介绍了在C#中使用TryParseExact将字符串解析为DateTime的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我看了很多例子,并且按照他们的建议去做,但是我不断收到 InvliadCastException ,错误描述为:

I've looked at so many examples, and I am doing as they all suggest, yet I keep getting an InvliadCastException with error description of:

无法将类型为'System.DateTime'的对象转换为类型为'System.String'

Unable to cast object of type 'System.DateTime' to type 'System.String'

我要从ASP.NET MVC4应用程序中的出生日期文本字段中获取日期,格式为 1986/9/20

I am getting my date from a Date Of Birth Text field in an ASP.NET MVC4 application, in the following format 20/09/1986

这是我的代码,我只希望18岁以上的用户能够注册。

Here is my code, I only want users above 18 years of age to be able to register.

public class AgeValidator : ValidationAttribute { public override bool IsValid(object value) { string format = "dd/MM/yyyy HH:mm:ss"; DateTime dt; DateTime.TryParseExact((String)value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); DateTime today = DateTime.Today; int age = today.Year - dt.Year; if (dt > today.AddYears(-age)) age--; if (age < 18) { return false; } return true; } }

然后使用我的自定义验证,如下所示:

My custom validation is then used like so:

[Required] [Display(Name = "Date Of Birth")] [AgeValidator(ErrorMessage="You need to be at least 18 years old to vote.")] public DateTime DateOfBirth { get; set; }

如何正确解析DateTime?

How can I get the DateTime parsed correctly?

推荐答案

这听起来像是使用重载方法的好地方:

This sounds like a good place to use overloaded methods:

public override bool IsValid(DateTime value) { DateTime today = DateTime.Today; int age = today.Year - value.Year; if (value > today.AddYears(-age)) age--; if (age < 18) { return false; } return true; } public override bool IsValid(string value) { string format = "dd/MM/yyyy HH:mm:ss"; DateTime dt; if (DateTime.TryParseExact((String)value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) { return IsValid(dt); } else { return false; } } public override bool IsValid(object value) { return IsValid(value.ToString()); }

更多推荐

在C#中使用TryParseExact将字符串解析为DateTime

本文发布于:2023-11-07 19:45:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1567255.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   TryParseExact   DateTime

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!