所以我正在制作一个窗口表单,其中包含一个单独的课程,用于学生详细信息和国际学生我需要确认学生/国际学生的年级分数大于0且小于100。
我还希望将出生日期显示为dd / mm / yyyy,但目前显示为加上时间。
我将在下面加上代码:
出生日期
student1.DateOfBirth = DateTime.Parse(txtDateofbirth.Text).Date;
if (string.IsNullOrEmpty(txtDateofbirth.Text))
{
MessageBox.Show("Please enter a DoB");
}
现在为年度马克
try // Trying to do the thing in the curly braces
{
student1.YearMark = Int32.Parse(txtYearMark.Text);
}
catch (Exception) // If it doesn't work skip the crash and print this
{
MessageBox.Show("The Year mark must be a number and can't be empty");
}
答案 0 :(得分:1)
我建议您使用DateTimePicker控件输入日期,使用NumericUpDown控件输入YearMark,而不是使用TextBox。
DateTimePicker控件允许您定义显示格式并将条目限制在特定范围内。如果我没记错,Value属性的类型为DateTime,因此您不必解析字符串。
NumericUpDown控件允许您定义一系列允许值。 Value属性的类型为Decimal,但您可以安全地将其强制转换为Int32。这比解析String更安全。
答案 1 :(得分:0)
日期的ToString()
功能超载,可让您指定所需的确切格式。
Date l_date = Date.Today();
l_date.ToString( "dd/MM/yyyy" );
有关可用格式的更多信息,请访问文档:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
可以通过Int32.TryParse
函数将string
解析为int
,如下所示:
string x = "32";
int y = -1;
if ( !x.TryParse( x, out y ) ){
// The parse failed
}
然后你可以测试int的值来确定它是否在所需的范围内。
if ( y > 0 && y <= 100 ){
// Do something
}
答案 2 :(得分:0)
您需要获取DateTime对象与当前日期之间的差异,以便创建TimeSpan对象并获取其“Years”属性。
TimeSpan diff = new DateTime()。subtract(dateOfBirth);
if(diff.Years&gt; 0&amp;&amp; diff.Years&lt; 100) isValid = true;
要以任何所需格式显示DateTime对象,请使用带格式化程序的ToString()方法。
要解决您的确切问题,请尝试以下操作:
dateOfBirth.ToString( “DD / MM / YYYY”); //大写MM表示月份,而小写MM表示分钟
答案 3 :(得分:0)
你也可以用一个简单的方法来测试这个也是一个例子
IsDate(txtYearMark.Text);
public static bool IsDate(string date)
{
DateTime Temp;
return(DateTime.TryParse(date, out Temp)&&date.Length>=10)
}