VB.NET Date/Time Linq to SQL 的格式问题
VB.NET Date/Time formatting issues with Linq to SQL
我从 SQL 中提取日期时间信息,将其转换为字符串,然后使用子字符串将其分割成日期、小时和分钟变量。在数据库中,日期显示为 MM/dd/YYYY,month/day 始终使用两位数字(例如 09/04/2016),但查询后它在我的应用程序中显示为 (9/4 /2016) 这会影响我的子字符串计数。如何让我的查询在必要时将 0 保留在前面?
Private Sub pullDate()
pulledDate = dgvTimeManager.SelectedItem.TimeIn.ToString
pulledDate = pulledDate.Substring(0, 10)
datepickerEdit.SelectedDate = Date.Parse(pulledDate)
End Sub
Private Sub pullStartTime()
pulledStartTime = dgvTimeManager.SelectedItem.TimeIn.ToString
If pulledStartTime.Length = 22 Then
pulledStartHour = pulledStartTime.Substring(11, 2)
pulledStartMinute = pulledStartTime.SubString(14, 2)
pulledStartAMPM = pulledStartTime.SubString(20, 2)
ElseIf pulledStartTime.Length = 21 Then
pulledStartHour = pulledStartTime.SubString(11, 1)
pulledStartMinute = pulledStartTime.SubString(13, 2)
pulledStartAMPM = pulledStartTime.SubString(19, 2)
End If
If pulledStartAMPM = "AM" Then
comboStartEditAMPM.SelectedIndex = 0
ElseIf pulledStartAMPM = "PM" Then
comboStartEditAMPM.SelectedIndex = 1
End If
txtStartHrEdit.Text = pulledStartHour
txtStartMinEdit.Text = pulledStartMinute
End Sub
dgvtimemanger 是显示我的时间的数据网格 table,starttime.length 条件是要考虑显示为一位或两位的小时(与我现在处理的相同)日期)
不要转换为字符串,而是使用 DateTime 对象的属性。例如:
pulledStartHour = pulledStartTime.Hour.ToString("00")
将 return 小时(24 小时格式),然后将其转换为字符串。
您也可以改用 .ToString(format)。
pulledStartHour = pulledStartTime.ToString("hh")
pulledStartAMPM = pulledStartTime.ToString("tt")
它为您提供小时数(12 小时格式)和 AM/PM。
您还可以组合字符串格式:
pulledStartTime.ToString("hh:mm tt")
https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
您在处理字符串方面花费了 方式 太多的精力。使用给定的 DateTime
值,此代码变得 多 更简单:
Private Sub pullDate()
datepickerEdit.SelectedDate = dgvTimeManager.SelectedItem.TimeIn.Date
End Sub
Private Sub pullStartTime()
Dim pulledStartTime As DateTime = dgvTimeManager.SelectedItem.TimeIn
txtStartHrEdit.Text = pulledStartTime.ToString("hh")
txtStartMinEdit.Text = pulledStartTime.ToString("mm")
comboStartEditAMPM.SelectedIndex = If(pulledStartTime.Hour >= 12, 1, 0)
End Sub
此外,我倾向于编写这些方法来接受参数:
Private Sub SetStartTime(DateTime timeToSet)
datepickerEdit.SelectedDate = timeToSet.Date
txtStartHrEdit.Text = timeToSet.ToString("hh")
txtStartMinEdit.Text = timeToSet.ToString("mm")
comboStartEditAMPM.SelectedIndex = If(timeToSet.Hour >= 12, 1, 0)
End Sub
然后这样称呼他们:
SetStartTime(dgvTimeManager.SelectedItem.TimeIn)
请注意第一个是如此简单,甚至不值得再构建该方法,因此我将代码作为设置时间的一部分。
我从 SQL 中提取日期时间信息,将其转换为字符串,然后使用子字符串将其分割成日期、小时和分钟变量。在数据库中,日期显示为 MM/dd/YYYY,month/day 始终使用两位数字(例如 09/04/2016),但查询后它在我的应用程序中显示为 (9/4 /2016) 这会影响我的子字符串计数。如何让我的查询在必要时将 0 保留在前面?
Private Sub pullDate()
pulledDate = dgvTimeManager.SelectedItem.TimeIn.ToString
pulledDate = pulledDate.Substring(0, 10)
datepickerEdit.SelectedDate = Date.Parse(pulledDate)
End Sub
Private Sub pullStartTime()
pulledStartTime = dgvTimeManager.SelectedItem.TimeIn.ToString
If pulledStartTime.Length = 22 Then
pulledStartHour = pulledStartTime.Substring(11, 2)
pulledStartMinute = pulledStartTime.SubString(14, 2)
pulledStartAMPM = pulledStartTime.SubString(20, 2)
ElseIf pulledStartTime.Length = 21 Then
pulledStartHour = pulledStartTime.SubString(11, 1)
pulledStartMinute = pulledStartTime.SubString(13, 2)
pulledStartAMPM = pulledStartTime.SubString(19, 2)
End If
If pulledStartAMPM = "AM" Then
comboStartEditAMPM.SelectedIndex = 0
ElseIf pulledStartAMPM = "PM" Then
comboStartEditAMPM.SelectedIndex = 1
End If
txtStartHrEdit.Text = pulledStartHour
txtStartMinEdit.Text = pulledStartMinute
End Sub
dgvtimemanger 是显示我的时间的数据网格 table,starttime.length 条件是要考虑显示为一位或两位的小时(与我现在处理的相同)日期)
不要转换为字符串,而是使用 DateTime 对象的属性。例如:
pulledStartHour = pulledStartTime.Hour.ToString("00")
将 return 小时(24 小时格式),然后将其转换为字符串。
您也可以改用 .ToString(format)。
pulledStartHour = pulledStartTime.ToString("hh")
pulledStartAMPM = pulledStartTime.ToString("tt")
它为您提供小时数(12 小时格式)和 AM/PM。
您还可以组合字符串格式:
pulledStartTime.ToString("hh:mm tt")
https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
您在处理字符串方面花费了 方式 太多的精力。使用给定的 DateTime
值,此代码变得 多 更简单:
Private Sub pullDate()
datepickerEdit.SelectedDate = dgvTimeManager.SelectedItem.TimeIn.Date
End Sub
Private Sub pullStartTime()
Dim pulledStartTime As DateTime = dgvTimeManager.SelectedItem.TimeIn
txtStartHrEdit.Text = pulledStartTime.ToString("hh")
txtStartMinEdit.Text = pulledStartTime.ToString("mm")
comboStartEditAMPM.SelectedIndex = If(pulledStartTime.Hour >= 12, 1, 0)
End Sub
此外,我倾向于编写这些方法来接受参数:
Private Sub SetStartTime(DateTime timeToSet)
datepickerEdit.SelectedDate = timeToSet.Date
txtStartHrEdit.Text = timeToSet.ToString("hh")
txtStartMinEdit.Text = timeToSet.ToString("mm")
comboStartEditAMPM.SelectedIndex = If(timeToSet.Hour >= 12, 1, 0)
End Sub
然后这样称呼他们:
SetStartTime(dgvTimeManager.SelectedItem.TimeIn)
请注意第一个是如此简单,甚至不值得再构建该方法,因此我将代码作为设置时间的一部分。