我怎样才能在c#中的datetime变量中仅指定2011年的年份?

时间:2011-07-04 11:44:13

标签: c# datetime

我有一个asp文本框 用户只填写一年的值,对于这个值,我在c#应用程序中有Datetime type属性,在DB中有Date类型列。所以我想将txtYear.Text转换为DateTime但它只会保存和/或显示年份。在这种情况下请帮助我。

8 个答案:

答案 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上的文档。

DateTime.Year Property

答案 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);