解析和验证数字和日期时间输入

时间:2012-10-18 21:18:07

标签: c# validation parsing datetime

所以我正在制作一个窗口表单,其中包含一个单独的课程,用于学生详细信息和国际学生我需要确认学生/国际学生的年级分数大于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");
} 

4 个答案:

答案 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)

  1. 您需要获取DateTime对象与当前日期之间的差异,以便创建TimeSpan对象并获取其“Years”属性。

    TimeSpan diff = new DateTime()。subtract(dateOfBirth);

    if(diff.Years&gt; 0&amp;&amp; diff.Years&lt; 100) isValid = true;

  2. 要以任何所需格式显示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)
    }