vb.net - 创建一个数组来存储日期值 (dd/mm/yyyy)
问题描述
您将如何创建具有日期值的数组并将其存储为格式 (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
结束类
解决方案
首先,StudentDOB.ToString(...)
返回一个您现在尝试分配给数组的字符串。因为 a String
≠Array
这样做是不可能的。
如果您尝试做的是施加格式限制,那也是不可能的。每次向数组添加一些东西时,您都必须处理它,也就是说,在这一行:
StudentDOB(CurrentIndex) = DOB
因为DOB
是一个Date
你可以使用你的ToString(...)
重载。
其次,您也可以在列表框中获得时间,因为您只传递它DOB
,这允许它自己选择格式。相反,您应该将已格式化的字符串传递给它:
lstOutput.Items.Add(String.Format(MyFormat, Name, CurrentDOB(CurrentIndex), Mark))
第三,由于某种原因,您在代码中的不同位置增加CurrentIndex
了三倍。这将导致您的阵列不同步并很快“满”。
在修改所有数组后,从 then开始CurrentIndex = 0
只增加一次。最好在你打电话后。lstOutput.Items.Add(...)
最后,我建议使用 aDateTimePicker
而不是TextBox
fortxtDOB
因为它不允许非日期输入。
这也使您可以指定最小和最大允许日期。要将最大日期设置为今天之前,您可以将其放入Form.Load
事件中:
dtpDOB.MaxDate = Date.Now.AddDays(-1)
推荐阅读
- windows - 当我不希望批处理文件打印“=”时出现问题
- flutter - 更新继承小部件的变量值
- java - Jython - 将带有 Java 字符串的 Java 数组转换为带有 Python 字符串的 Python 列表
- list - 折叠包含未定义的列表时,为什么 foldr 不返回未定义?
- javascript - 当我将组件实例创建到数组中时,vue Store 不会加载/无法读取未定义的属性“状态”
- django - Django:对象没有属性“更新”
- json - 当给定的 JSON 值不是 JSON 对象时,解组自定义结构
- angular - 如何在 FormArray 的循环中使用 PatchValue?
- c# - Azure 认知服务计算机视觉在 QA 中失败,但在开发中完美运行
- javascript - 如何将值从表单添加到 div,堆叠值?