gpt4 book ai didi

mysql - VB 2008 和 MySQL 中的日期格式

转载 作者:行者123 更新时间:2023-11-29 11:55:57 26 4
gpt4 key购买 nike

我对 vb 2008 和 MySQL 服务器中的日期格式有一些问题。我想要一个文本框,输入接受这种格式 dd-mm-yyyy 和 dd/mm/yyyy 的日期,然后将其转换为 mysql 日期格式 yyyy-mm-dd。

到目前为止,我不知道如何开始这种日期格式,但我想将它放在一个模块中。

非常感谢任何想法。谢谢

最佳答案

用户倾向于以各种格式输入日期,例如 dd-MM-yyyy、dd/M/yyyy、d.MM.yyyy 等。尽管我们可以使用验证器、正则表达式来遏制它们等等,但在不使用任何正则表达式、验证器和插件的情况下,我们可以使用以下方法来验证和转换以以下格式作为字符串传递的日期:

day[separator]month[separator]year

其中日期可以是 ddd (3, 03),
月份可以是 MMM (7, 07),
年份可以是 yyyyyy (15, 2015) 和
分隔符可以是 [space]/.-

并且可以采用混合格式,例如
dd-MM-YYYYdd/MM/YYYYdd.MM.YYYYdd MM yyyyd-M-YYd/M/YYd.M.YYd M yyd- MM-YYYYdd/M/YYYYdd.MM.YY

此函数将日期作为上述任何格式的字符串参数,并验证并返回 yyyy-MM-dd 格式的日期。它检查闰年,并以 1970 年为基础检查从 yy 转换为 yyyy 格式。

Public Function DMYtoYMD(stDate As String) As String
Dim blValidDate As Boolean = True
While stDate.Contains(" ")
stDate = stDate.Replace(" ", " ")
End While
stDate = stDate.Trim.Replace(" ", "-").Replace("/", "-").Replace(".", "-")
Dim stFinalDate As String = ""
If stDate.Length > 0 Then
Dim mc As String() = stDate.Split(CChar("-"))
Dim inDay As Integer = CInt(mc(0))
Dim inMonth As Integer = 0
If IsNumeric(mc(1)) Then
inMonth = CInt(mc(1))
Else
For inMonthNo As Integer = 1 To 13
If inMonthNo = 13 Then
inMonth = 0
blValidDate = False
Return ""
ElseIf MonthName(inMonthNo, True).ToLower = mc(1).ToLower.Substring(0, 3) Then
inMonth = inMonthNo
Exit For
End If
Next
End If
Dim inYear As Integer = Math.Abs(CInt(mc(2)))
stFinalDate = ""
If inYear < 100 Then
'use above condition to convert 0 (i.e. 2000) to current year to 20xx and all others to 19xx
'If inYear >= (CInt(Format(Today, "yy")) + 1) Then

'use this condition to convert all yy year above 70 to 19xx and all others to 20xx
If inYear > 70 Then
inYear += 1900
Else
inYear += 2000
End If

'ignoring year from 101 to 999 (as per my specific requirement for the project). valid dates are to be from 1900 or above
ElseIf inYear < 1900 Then '101 to 999
stFinalDate = ""
blValidDate = False
End If
If (inMonth < 1 OrElse inMonth > 12) Then
stFinalDate = ""
blValidDate = False
ElseIf (inDay < 1 OrElse inDay > 31) Then
stFinalDate = ""
blValidDate = False
ElseIf ((inMonth = 4 OrElse inMonth = 6 OrElse inMonth = 9 OrElse inMonth = 11) AndAlso inDay = 31) Then
stFinalDate = ""
blValidDate = False
ElseIf (inMonth = 2) Then
Dim isleap As Boolean = (inYear Mod 4 = 0 AndAlso (inYear Mod 100 <> 0 OrElse inYear Mod 400 = 0))
If (inDay > 29 OrElse (inDay = 29 AndAlso Not isleap)) Then
stFinalDate = ""
blValidDate = False
End If
End If
If blValidDate Then
stFinalDate = CStr(New Date(inYear, inMonth, inDay))
If Not IsDate(stFinalDate) Then
stFinalDate = ""
Else
stFinalDate = Format(New Date(inYear, inMonth, inDay), "yyyy-MM-dd")
End If
End If
End If
Return stFinalDate
End Function

您可以简单地将其称为

Dim dtDate As String = ""
dtDate = DMYtoYMD(TextBox1.Text) 'or as Class1.DMYtoYDM as per your code structure

如果输入日期无效,此函数将返回零长度字符串。可以进一步修改它以包含 MMMMMMM 格式以转换为 MM 并检查 MM-dd-yyyy code> 或根据您的要求的其他输入格式。

关于mysql - VB 2008 和 MySQL 中的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com