C# DateTime数据类型存在问题

C# DateTime数据类型存在问题,c#,datetime,C#,Datetime,我对日期时间数据类型有问题。通过一个文本框,我想添加个人出生日期。由于C#中没有日期数据类型,我被迫使用DateTime数据类型,但在将TxtDateofBirth转换为DateTime时,我遇到了一个错误,“字符串未被识别为有效的DateTime。”下面是我的转换代码。我将此代码保存在add事件中 DateTime dateofbirth = Convert.ToDateTime(TxtDateOfBirth.Text); 我该怎么办 谢谢 Masum将DateTime.ParseExact

我对日期时间数据类型有问题。通过一个文本框,我想添加个人出生日期。由于C#中没有日期数据类型,我被迫使用DateTime数据类型,但在将TxtDateofBirth转换为DateTime时,我遇到了一个错误,“字符串未被识别为有效的DateTime。”下面是我的转换代码。我将此代码保存在add事件中

DateTime dateofbirth = Convert.ToDateTime(TxtDateOfBirth.Text);
我该怎么办

谢谢


Masum将DateTime.ParseExact与仅指定日期部分的格式字符串一起使用

或者,由于这是用户输入,因此如果用户输入了错误的日期,则不需要捕获异常:

using System;

class Test
{
    static void Main()
    {
        TestParsing("24/10/2009");
        TestParsing("flibble");
    }

    static void TestParsing(string text)
    {
        DateTime dt;

        if (DateTime.TryParseExact(text, "d", null, 0, out dt))
        {
            Console.WriteLine("Parsed to {0}", dt);
        }
        else
        {
            Console.WriteLine("Bad date");
        }
    }
}

请注意,格式字符串“d”表示“短日期格式”(请参阅MSDN中的和页)。“null”的意思是“使用当前的文化”-所以上面的内容在英国对我来说很有用,但在美国你需要使用字符串“10/24/2009”。如果不想使用线程的当前默认值,可以指定特定区域性。0表示默认的日期和时间样式。查看MSDN页面了解更多信息。

使用DateTime.ParseExact和仅指定日期部分的格式字符串

或者,由于这是用户输入,因此如果用户输入了错误的日期,则不需要捕获异常:

using System;

class Test
{
    static void Main()
    {
        TestParsing("24/10/2009");
        TestParsing("flibble");
    }

    static void TestParsing(string text)
    {
        DateTime dt;

        if (DateTime.TryParseExact(text, "d", null, 0, out dt))
        {
            Console.WriteLine("Parsed to {0}", dt);
        }
        else
        {
            Console.WriteLine("Bad date");
        }
    }
}

请注意,格式字符串“d”表示“短日期格式”(请参阅MSDN中的和页)。“null”的意思是“使用当前的文化”-所以上面的内容在英国对我来说很有用,但在美国你需要使用字符串“10/24/2009”。如果不想使用线程的当前默认值,可以指定特定区域性。0表示默认的日期和时间样式。查看MSDN页面了解更多信息。

或者,用户只能输入有效日期。(请参见给定链接示例下的c部分)

或者,用户只能输入有效日期。(参见链接示例下的c部分)

Jon的答案几乎没有什么可以补充的,但在这种情况下,我想指出一点:

请试着理解您的问题不是因为DateTime数据类型,而是因为您的日期字符串与DateTime构造函数指定的预期格式(基于区域设置/线程区域性)不匹配


您说您“被迫”使用DateTime数据类型。你应该记住,日期应该始终被视为日期。我看到太多的开发人员陷入了使用日期作为字符串(并执行拆分/搜索操作)而不是使用日期时间的陷阱,因为他们觉得后者太复杂了。

Jon的答案几乎没有任何补充,但在这种情况下,我想指出一点:

请试着理解您的问题不是因为DateTime数据类型,而是因为您的日期字符串与DateTime构造函数指定的预期格式(基于区域设置/线程区域性)不匹配

您说您“被迫”使用DateTime数据类型。你应该记住,日期应该始终被视为日期。我见过太多的开发人员陷入了使用日期作为字符串(并执行拆分/搜索操作)而不是使用日期时间的陷阱,因为他们觉得后者太复杂了