DateTime数据类型的问题

时间:2009-02-19 07:41:28

标签: c# datetime

我遇到DateTime数据类型的问题。通过文本框我想添加人物dateofbirth。由于C#中没有日期数据类型,我被迫使用DateTime数据类型,但在将TxtDateofBirth转换为DateTime时,我收到错误,“字符串未被识别为有效的DateTime”。这是我转换代码。我将此代码保留在add event中。

DateTime dateofbirth = Convert.ToDateTime(TxtDateOfBirth.Text);

我该怎么办?

谢谢,

Masum

3 个答案:

答案 0 :(得分:3)

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

或者,因为这是用户输入,请使用DateTime.TryParseExact,这样如果用户输入了错误的日期,则无需捕获异常:

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中的"standard date and time form at strings""custom date and time format strings"页面)。 “null”的意思是“使用当前的文化” - 所以上述内容适用于英国,但您需要在美国制作字符串“10/24/2009”。如果您不想使用线程的当前默认值,则可以指定特定区域性。 0表示默认的日期和时间样式。查看MSDN页面以获取更多信息。

答案 1 :(得分:1)

或者,use a mask以便用户只能输入有效日期。 (参见给出链接示例下的c#部分)

答案 2 :(得分:1)

几乎没有任何东西可以添加到Jon的答案中,但在这种情况下,我想说明一点:

尝试了解您的问题不是因为DateTime数据类型,而是因为您的日期字符串与DateTime构造函数的预期格式(基于区域设置/线程文化)不匹配。

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