2013-10-11 1 views
0

몇 가지 코드를 만들어야하는데, 다음을 수행해야합니다. 사용자는 키 누름 이벤트로 코딩 한 숫자 만 입력합니다. 다음은 날짜 길이가 8 자일 수 있습니다. mm/dd/yy 또한 각 달, 일 및 년을위한 정확한 날짜가 정확하면 나는 개별적으로 유효 할 수있다 그래야 달, 일 및 년을 다른 가변에서 저장해달라고해야한다이 조건 안에. 예를 들어 우리는 1 년에 12 개월 이상을 가지고 있지 않습니다. 그래서 부분 문자열을 사용하여 텍스트 상자의 입력을 보유하고 개별적으로 유효성을 검사하는 하나의 변수를 분리하려고 생각했습니다.Visual Studio/Visual Basic Textbox는 형식이 지정된 날짜 만받습니다.

나는 내장 함수가 있음을 알고 있지만,이 경우에는 사용할 수 없다.

Private Sub btnCheckDate_Click(sender As Object, e As EventArgs) Handles btnCheckDate.Click 

Dim strDate As String 
Dim badDate As Boolean = False 

    strDate = txtInput.TabIndex 
    If strDate.Length <> 8 Then 
     MessageBox.Show("Bad date") 
     txtInput.Text = String.Empty 
     txtInput.Focus() 
    End If 

    Dim intMonth As Integer 
    Dim intDay As Integer 
    Dim intYear As Integer 

    intMonth = CInt(strDate.Substring(0, 2)) 
+2

대신 Date.ParseExact (strDate, "MM/dd/yy", CultureInfo.InvariantCulture)'를 사용하십시오. 동일한 형식의 'Date.TryParseExact'를 사용하여 입력의 유효성을 검사 할 수 있습니다. –

+0

"기본 제공 함수를 사용할 수 없습니다"라는 의미는 무엇입니까? '하위 문자열 (Substring) '은 "내장 함수 (built-in function)"입니다 (예를 들어'Date.Parse' 또는 호출 할 수있는 다른 메소드). – pescolino

+0

나는 그것이 날짜 검증 기능을 의미한다고 추정한다. 하위 문자열을 사용하여 잘라내어 int로 변환 한 다음 각 값의 유효성을 검사합니다. 나는 여분의 신용을 위해 가고 8-10 개의 문자 (MM/DD/YYYY)를 허용 할 것입니다. 엑스트라 엑스트라 크레디트는 T/F를 반환하는 호출 된 함수에 대해 각 유효성 검사를 수행합니다. 힌트 : 먼저 달을 지내십시오. – Plutonix

답변

0

내장 함수를 사용할 수 없다고하면 날짜/시간 함수를 사용한다고 가정합니다. 서로 다른 길이와 윤년의 달을 수행 할 수있는 다른 검증이

Dim strDate As String = txtInput.Text 
Dim intMonth As Integer 
Dim intDay As Integer 
Dim intYear As Integer 
Dim badDate As Boolean = True 
If strDate.Length = 8 Then 
    Dim DateParts As List(Of String) = txtInput.Text.Split("/"c).ToList 
    If DateParts.Count = 3 Then 
     If Integer.TryParse(DateParts(0), intMonth) AndAlso Integer.TryParse(DateParts(1), intDay) AndAlso Integer.TryParse(DateParts(2), intYear) Then 
      If intMonth <= 12 AndAlso intDay <= 31 AndAlso intYear <= 20 Then 
       badDate = False 
      End If 
     End If 
    End If 
End If 
If badDate = True Then 
    MessageBox.Show("Bad date") 
    txtInput.Text = String.Empty 
    txtInput.Focus() 
End If 

의 다음은 텍스트의 유효성을 검사하고 변수에 각 부분을 넣는 간단한 방법이있다. 조건문을 추가하십시오.

badDate를 기본값으로 변경했습니다. True로 설정하면 읽는 것이 더 합리적인 것처럼 보입니다.