我有一个包含给定年份的文本字段,例如“2011”。我需要计算70年前的年份值。
我已经有了这个代码,它为文本框提供了一个默认值:
var LastYear = DateTime.Now.AddYears(-1).ToString("yyyy"); //"2011"
Yeartextbox.Text = LastYear;
允许用户将文本框的值更改为他们想要的任何年份。我需要从文本框中获取数据,并在70年前计算出来。例如,如果文本框包含“2011”,我需要1941年的结果;如果用户输入2000,我需要1930年的结果。
答案 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
}
这将完成工作(您显然需要使其适应您的代码)。如果没有,您可能需要确保屏幕正确刷新。