创建一个数组来存储日期值(dd / mm / yyyy)

时间:2018-06-10 17:41:40

标签: vb.net

如何创建包含日期值的数组并以格式(dd / mm / yyyy)存储它。目前,我还得到了输入日期的时间。我的目标是将一个人的出生日期存储在学生数据库中。是否也可以在今天之前限制DOB?

Public Class frmStudentDB
Dim CurrentIndex As Integer
Dim StudentName(20) As String
Dim StudentMark(20) As Integer
Dim StudentDOB(20) As Date = StudentDOB.ToString("dd/MM/yyyy")
Dim MyFormat As String = "{0, -20}{1,-10}{2,4}"

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Dim Name As String
    Dim DOB As Date
    Dim Mark As Integer

    If CurrentIndex = 20 Then
        MsgBox("The array is FULL!")
    ElseIf txtName.Text = "" Or txtDOB.Text = "" Or txtMark.Text = "" Then
        MsgBox("Please fill in the fields as they cannot be left empty")
    ElseIf (IsNumeric(txtMark.Text)) = False Then
        MsgBox("Please enter a number for mark.")
    ElseIf (Integer.Parse(txtMark.Text) > 100) Or (Integer.Parse(txtMark.Text) < 1) Then
        MsgBox("Mark has to be between 1-100")
    Else
        Name = txtName.Text
        CurrentIndex = CurrentIndex + 1
        StudentName(CurrentIndex) = Name
        txtName.Clear()

        DOB = txtDOB.Text
        CurrentIndex = CurrentIndex + 1
        StudentDOB(CurrentIndex) = DOB
        txtDOB.Clear()

        Mark = txtMark.Text
        CurrentIndex = CurrentIndex + 1
        StudentMark(CurrentIndex) = Mark
        txtMark.Clear()

        txtName.Focus() 'Position cursor for input of next student's name
        lstOutput.Items.Add(String.Format(MyFormat, Name, DOB, Mark))
    End If

End Sub



Private Sub frmStudentDB_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    CurrentIndex = -1
    lstOutput.Items.Add(String.Format(MyFormat, "Name", "DOB", "Mark"))
End Sub

结束班

1 个答案:

答案 0 :(得分:0)

首先StudentDOB.ToString(...)会返回您正在尝试分配给数组的 单字符串 。由于StringArray这样做是不可能的。

如果你要做的是强加格式限制,这也是不可能的。每次向数组添加内容时,都必须处理,即在此行:

StudentDOB(CurrentIndex) = DOB

由于DOBDate,您可以使用ToString(...)重载。

其次,您也可以在列表框中获得时间,因为您只传递了DOB,这样就可以自行选择格式。相反,你应该传递已经格式化的字符串:

lstOutput.Items.Add(String.Format(MyFormat, Name, CurrentDOB(CurrentIndex), Mark))

第三,由于某种原因,您在代码中的不同位置增加CurrentIndex 三次。这将导致您的阵列不同步并快速“充分”。

CurrentIndex = 0开始,然后只有在 后修改所有数组才增加一次。最好在致电lstOutput.Items.Add(...)之后。

最后,我建议TextBox使用DateTimePicker而不是txtDOB,因为它不允许非日期输入。

这也使您可以指定允许的最小和最大日期。要将最大日期设置为今天之前,您可以将其置于Form.Load事件中:

dtpDOB.MaxDate = Date.Now.AddDays(-1)