日期时间解析问题的尝试

4
string date = txtWorkingDate.Text;
            DateTime dateTime = DateTime.MinValue;

            if (DateTime.TryParse(date, out dateTime))
            {
                args.IsValid = true;
            }
            else
                args.IsValid = false;

txtWorkingDate.Text的格式类似于“dd.MM.yyyy”,因此如果日期不是“dd.MM.yyyy”格式,验证始终为false。如何检查日期类型是否为“dd.MM.yyyy”、“MM/dd/yyyy”等,因为它们都是有效的。

3个回答

18

通过使用这个重载函数并提供可接受的格式:

string date = txtWorkingDate.Text;
DateTime dateTime;
string[] formats = new[] { "dd.MM.yyyy", "MM/dd/yyyy" };
if (DateTime.TryParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
{
    args.IsValid = true;
}
else
{
    args.IsValid = false;
}

1
无论我输入日期的格式如何,它总是返回false :( - Axel
@Axel尝试将所有可能的组合都添加到格式中。我的意思是..dd.MM.yyyy,d.MM.yyyy,dd.M.yyyy等等 - Galma88

2
System.Globalization.CultureInfo cultureinfo =  
        new System.Globalization.CultureInfo("en-gb"); 
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo); 

在假设你已知道文化的情况下,你需要指定它。


1

你可以使用

DateTime.TryParse(
    string s,
    IFormatProvider provider,
    DateTimeStyles styles,
    out DateTime result
)

过载。

另外,你不需要 if,可以直接写

args.IsValid = DateTime.TryParse(...);

由于DateTime.TryParse()已经返回了一个布尔值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接