我有一个asp文本框 用户只填写一年的值,对于这个值,我在c#应用程序中有Datetime type属性,在DB中有Date类型列。所以我想将txtYear.Text转换为DateTime但它只会保存和/或显示年份。在这种情况下请帮助我。
答案 0 :(得分:8)
要显示年份,请使用格式“yyyy”。
string s = "2011";
DateTime d = new DateTime(int.Parse(s), 1, 1);
Console.WriteLine(d.ToString("yyyy"));
Console.WriteLine(d);
答案 1 :(得分:8)
DateTime对象将始终保存完整的DateTime值,您不能仅使用它来存储一年。 (无论如何会使用什么用途?)此外,“year”的数据类型是int,而不是DateTime。
因此,我建议您在代码和数据库中将属性更改为datatype。
答案 2 :(得分:5)
您必须指定要操作的DateTime
值的格式:
String dateTimeFormat = "yyyy";
要仅显示DateTime
值的一部分,请使用以下内容:
dateTimeValue.ToString(dateTimeFormat);
要在String
中读取代表年的DateTime
值,请使用以下代码:
DateTime.ParseExact(stringValue, dateTimeFormat, CultureInfo.InvariantCulture);
DateTime.ParseExact Method (String, String, IFormatProvider)使用指定的格式和特定于文化的格式信息将日期和时间的指定字符串表示形式转换为其DateTime等效项。字符串表示的格式必须与指定的格式完全匹配。
DateTime.ToString Method将当前DateTime对象的值转换为其等效的字符串表示形式。
答案 3 :(得分:2)
而不是应用任何字符串操作函数来使用Year属性。请访问以下链接查看msdn上的文档。
答案 4 :(得分:2)
DateTime始终具有完整日期组件。创建DateTime实例时,您需要指定一个月和一天,但您可以在使用中忽略它们。
DateTime d = new DateTime(int.Parse(txtYear.Text, 1, 1);
txtYear.Text = d.ToString("yyyy");
更好的是不使用DateTime而只使用int。如果你只有一年,你只需要一个int。
答案 5 :(得分:1)
我假设文本框名称是txYear
DateTime dt = new DateTime (Convert.ToInt32(txYear.text),1,1)
将此dt值保存在数据库中
答案 6 :(得分:0)
如果您只想要年份,为什么不将其设为smallint
类型?
无论如何,如果你真的想让它成为一年,
DateTime x = new DateTime(Convert.ToInt32(txtYear.text), 1, 1);
但请确保您确认txtYear.text
确实拥有有效年份。
答案 7 :(得分:0)
这就是我的做法,并且有效。
string format = "yyyy";
var CurrentYear = DateTime.Now.ToString(format);