我有一个asp文本框作为其中用户只填写一个年份值,对于这个值,我在c#应用程序中有Datetime类型Property,在DB中有Date类型列。所以我想将txtYear.Text转换为DateTime,但它只会保存和/或显示年份。在这种情况下请帮帮我。
DateTime对象将始终包含一个完整的DateTime值,不能仅用于存储一年。(这有什么用?(此外,"year"的数据类型是int,而不是DateTime。
因此,我建议在代码和数据库中将属性更改为数据类型int。
要只显示年份,请使用"yyyy"格式。
string s = "2011";
DateTime d = new DateTime(int.Parse(s), 1, 1);
Console.WriteLine(d.ToString("yyyy"));
Console.WriteLine(d);
您必须指定正在操作的DateTime
值的格式:
String dateTimeFormat = "yyyy";
要只显示DateTime
值的一部分,请使用以下内容:
dateTimeValue.ToString(dateTimeFormat);
要将代表年份的String
值读入DateTime
,请使用以下方法:
DateTime.ParseExact(stringValue, dateTimeFormat, CultureInfo.InvariantCulture);
DateTime.ParseExact方法(String,String,IFormatProvider(使用指定的格式和区域性特定的格式信息,将指定的日期和时间的字符串表示形式转换为等效的DateTime。字符串表示形式的格式必须与指定的格式完全匹配。
DateTime.ToString方法将当前DateTime对象的值转换为其等效的字符串表示形式。
与其应用任何字符串操作函数,不如使用Year属性。通过访问以下链接查看msdn上的文档。
DateTime.Year属性
DateTime总是有一个完整的日期组件。创建DateTime实例时,需要分配月份和日期,但在使用中可以忽略它们。
DateTime d = new DateTime(int.Parse(txtYear.Text, 1, 1);
txtYear.Text = d.ToString("yyyy");
更好的方法是不使用DateTime,而只使用int。如果你只有一年,你只需要一个int。
我假设文本框名称为txYear
DateTime dt = new DateTime (Convert.ToInt32(txYear.text),1,1)
将此dt值保存在数据库中
如果你只想要年份,为什么不把它做成smallint
类型呢?
不管怎样,如果你真的想度过一年,
DateTime x = new DateTime(Convert.ToInt32(txtYear.text), 1, 1);
但是,请确保您验证txtYear.text
实际上有一个有效的年份。
我就是这样做的,它也起了作用。
string format = "yyyy";
var CurrentYear = DateTime.Now.ToString(format);