我有一个带有日期选择器的文本框,当我在日历上更改日期时,它会触发事件 textchanged。
我需要拆分文本框中的文本(日期)以获取该日期的年份。
您的处理程序可能如下所示:
protected void YourTextBox_TextChanged(Object sender, EventArgs e) {
var theDate = DateTime.Parse(YourTextBox.Text);
var theYear = theDate.Year;
}
即使您使用日期选择器来设置值,您也需要处理用户提供非日期值并Parse()
失败的情况。
DateTime time = DateTime.Parse(txt);
time.Year;
你为什么不使用DateTimePicker.Value
?
int year = dateTimePicker1.Value.Year;
这更高效、更简洁且不易出错。
但是,如果您只有文本,请使用DateTime.Parse
or DateTime.TryParse
:
int? year = null;
DateTime dt;
if(DateTime.TryParse(textBox1.Text, out dt))
year = dt.Year;
尝试这个:
var date = DateTime.Parse(txtbox.Text);
var year = date.Year;
string dateExample = yourDateObj.ToString("d");
string[] dateSplit = dateExample.Split("/");
dateSplit[2] 将是年份。
您可以使用txtbox.Text.Split(char)
日历用作分隔符的任何内容。
例如,如果您的日历设置日期如 2013-10-16,则调用 Split'-'
并使用第一个结果,所以txtbox.Text.Split('-')[0]
. 如果它看起来像 2013 年 10 月 15 日,然后调用'/'
并使用第三个结果,所以txtbox.Text.Split('/')[2]
.
根据日历输出的模糊程度,解析为日期可能有效,也可能无效。