0

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

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

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

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

4

6 回答 6

1

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

DateTime dateEntered=DateTime.Parse(Yeartextbox.Text);
var thatYear= dateEntered.AddYears(-70);
Yeartextbox.Text = thatYear.ToShortDateString();
于 2012-06-11T21:34:24.567 回答
0

我不确定我是否理解......但这就是你要找的......用-70预污染文本框?

var LastYear = DateTime.Now.AddYears(-70).ToString("yyyy"); //"2011" 
Yeartextbox.Text = LastYear; 
于 2012-06-11T21:34:32.437 回答
0

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

如果您想从中减去 70 年,只需执行 2011 - 70 年:

var year = Int32.Parse(Yeartextbox.Text) - 70;
于 2012-06-11T21:38:51.047 回答
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();

希望能帮助到你。

于 2012-06-11T21:41:05.560 回答
0

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

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

所以如果用户输入了2005你想要的 fe 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
}
于 2012-06-11T21:43:25.530 回答
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
        }

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

于 2012-06-11T21:44:03.333 回答