如何从用户提供的年份值中减去若干年

时间:2012-06-11 21:30:20

标签: c# datetime

我有一个包含给定年份的文本字段,例如“2011”。我需要计算70年前的年份值。

我已经有了这个代码,它为文本框提供了一个默认值:

var LastYear = DateTime.Now.AddYears(-1).ToString("yyyy"); //"2011"
Yeartextbox.Text = LastYear;

允许用户将文本框的值更改为他们想要的任何年份。我需要从文本框中获取数据,并在70年前计算出来。例如,如果文本框包含“2011”,我需要1941年的结果;如果用户输入2000,我需要1930年的结果。

6 个答案:

答案 0 :(得分:1)

什么阻止您从文本框中读取并分配给DateTime对象并调用AddYears函数?

DateTime dateEntered=DateTime.Parse(Yeartextbox.Text);
var thatYear= dateEntered.AddYears(-70);
Yeartextbox.Text = thatYear.ToShortDateString();

答案 1 :(得分:0)

我不确定我理解......但这是你正在寻找的......用-70预先校对文本框?

var LastYear = DateTime.Now.AddYears(-70).ToString("yyyy"); //"2011" 
Yeartextbox.Text = LastYear; 

答案 2 :(得分:0)

您要在文本框中存储一年,而不是日期。只是,例如,2011年。这只是一个数字,一个整数,你可以对它进行整数数学运算。 (恰好是一年的事实与-运算符无关。)

如果你想减去70年,那就做2011 - 70:

var year = Int32.Parse(Yeartextbox.Text) - 70;

答案 3 :(得分:0)

假设您有两个文本框,请按以下步骤操作:

// Get year as an integer from the text box
int currentYearAsInt = int.Parse(txtCurrentYear.Text);

// Create DateTime out of it (January 1st 1984, for example)
DateTime currentYear = new DateTime(currentYearAsInt, 1, 1);

// Create new DateTime 70 years older (remember, you cannot just call AddYears on the object, you have to assign returned value)
DateTime oldYear = currentYear.AddYears(-70);

// Populate new text box with old year's value (or do whatever you want with it
txtOldYear.Text = oldYear.Year.ToString();

希望它有所帮助。

答案 4 :(得分:0)

  

例如,如果他们想要今年,那将是2012-70

如果我理解正确,那么将年份从用户转换为DateTime对象时会遇到问题。

因此,如果用户输入f.e 2005,则需要1935-01-01。我是对的吗?

这样可行:

var input = "2005";  // Yeartextbox.Text
int year = 0;
DateTime result;
if(int.TryParse(input, out year))
{
    result = new DateTime(year, 1, 1).AddYears(-70); //1935-01-01
}

答案 5 :(得分:0)

        string initialYear = "2011";
        int year;
        string calculatedYear;

        if (int.TryParse(initialYear, out year))
        {
            var initialDate = new DateTime(year, 1, 1);
            calculatedYear = initialDate.AddYears(-70).Year.ToString();
        }
        else
        { 

            // Handle error since no valid value was entered
        }

这将完成工作(您显然需要使其适应您的代码)。如果没有,您可能需要确保屏幕正确刷新。