将年份字符串即'2005'转换为Datetime值

And*_*ick 3 c# asp.net datetime valueconverter

我正在创建一个简单的输入表单来创建一个帐户.在表单上有一个公司成立年份的输入字段,这是一个简单的文本框,用户将输入年份,即2005年.

但是,在尝试将此插入到数据库字段(即datetime)时,尽管将文本框条目转换为datetime,但仍会引发错误...

myCompanyAccount.Founded = Convert.ToDateTime(this.TxtCompanyFounded.Text);
Run Code Online (Sandbox Code Playgroud)

有没有办法可以将一年的输入(即2005年)转换为日期时间,以便将其插入数据库......?提前致谢!

Son*_*nül 7

它发生只是因为2005不是标准的日期和时间格式,这就是Convert.ToDateTime失败的原因。

您可以使用DateTime.TryParseExactDateTime.ParseExact方法来解析您的自定义日期和时间,例如;

string s = "2005";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
     Console.WriteLine(dt);
}
Run Code Online (Sandbox Code Playgroud)

dt将是01/01/2005 00:00:00(当然,它的代表取决于您当前的.ToString()方法文化)

这里一个demonstration.


Ale*_*lex 5

您应该创建一个新的DateTime,只需输入默认的天/月,如果您不需要它们,例如:

MyCompany.Founded = new DateTime(Convert.ToInt32(this.TxtCompanyFounded.Text), 1, 1);
Run Code Online (Sandbox Code Playgroud)