Datetime.TryParse无法解析yyyy/MM/dd格式。

3

我目前正在尝试将一个以yyyy/MM/dd格式给出的日期转换为可用日期。 检查是否给出了有效的日期。

if(!DateTime.TryParse(textBoxDatumVanStorting.Text, out Test2))

我目前使用的方式总是给我错误的日期。

我曾尝试使用DateTime.TryParseExact,但似乎无法正常工作。


2
可能是.NET中自定义日期格式的DateTime解析的重复问题。 - Xavier J
“_wrong date_” 是什么意思?你的 textBoxDatumVanStorting.TextCurrentCulture 分别是什么? - Soner Gönül
我使用的格式是yyyy/MM/dd。 textBoxDatumVanStorting.Text包含1994/09/27作为日期。 但是Tryparse无法解析我使用的格式。 - Blasje
2个回答

15

指定格式

考虑使用DateTime.TryParseExact()方法,它允许您明确定义字符串的格式:

// This will attempt to parse your date in exactly the format provided
if(!DateTime.TryParseExact(textBoxDatumVanStorting.Text,"yyyy/MM/dd", null, DateTimeStyles.None, out Date2))
{
    // Your date is not valid, consider doing something
}

文化问题

在上面的例子中,传递的第三个参数代表你期望使用的特定文化/格式来解析日期。使用null将默认为当前文化,但如果你需要明确指定,可以像这样使用不变的文化:

Date output;
if(!DateTime.TryParseExact(input,"yyyy/MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out output))  
{
     // Uh oh again...
}

谢谢,这个起作用了。只需要将DateTimeStyles.None更改为System.Globalization.DateTimeStyles.None。 - Blasje
@Blasje - 你可以在文件顶部添加using System.Globalization,这样就不需要输入那么多代码了。 - Chris Dunaway

0
如果 DateTime.TryParse 无法解析您的字符串,这意味着 yyyy/MM/dd 格式不是您的 CurrentCulture 的标准日期格式。
您可以使用自定义格式,例如 DateTime.TryParseExact
DateTime Test2;
if (DateTime.TryParseExact(textBoxDatumVanStorting.Text, "yyyy/MM/dd", 
                           CultureInfo.InvariantCulture, 
                           DateTimeStyles.None, out Test2))
{
    // Successfull parse
}

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