C# DateTime数据类型存在问题
我对日期时间数据类型有问题。通过一个文本框,我想添加个人出生日期。由于C#中没有日期数据类型,我被迫使用DateTime数据类型,但在将TxtDateofBirth转换为DateTime时,我遇到了一个错误,“字符串未被识别为有效的DateTime。”下面是我的转换代码。我将此代码保存在add事件中C# DateTime数据类型存在问题,c#,datetime,C#,Datetime,我对日期时间数据类型有问题。通过一个文本框,我想添加个人出生日期。由于C#中没有日期数据类型,我被迫使用DateTime数据类型,但在将TxtDateofBirth转换为DateTime时,我遇到了一个错误,“字符串未被识别为有效的DateTime。”下面是我的转换代码。我将此代码保存在add事件中 DateTime dateofbirth = Convert.ToDateTime(TxtDateOfBirth.Text); 我该怎么办 谢谢 Masum将DateTime.ParseExact
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数据类型。你应该记住,日期应该始终被视为日期。我见过太多的开发人员陷入了使用日期作为字符串(并执行拆分/搜索操作)而不是使用日期时间的陷阱,因为他们觉得后者太复杂了