求计算日期的几行代码,该如何解决
求计算日期的几行代码
要有一个输入框,一个显示框,当输入1225这样的数字然后按回车后生成2010-12-25这样的格式显示出来,并且将2010-12-25写进剪贴板,当输入的数字为两位数,比如60,那么就从当前的系统时间第二天开始往后推迟60天,得到的日期也以2010-XX-XX这样的生成。
当输入四位数字的前两位小于10(现在是10月),比如0213这种,那就生成2011-02-13,这种。
求高手给我代码,谢谢!
------解决方案--------------------
要有一个输入框,一个显示框,当输入1225这样的数字然后按回车后生成2010-12-25这样的格式显示出来,并且将2010-12-25写进剪贴板,当输入的数字为两位数,比如60,那么就从当前的系统时间第二天开始往后推迟60天,得到的日期也以2010-XX-XX这样的生成。
当输入四位数字的前两位小于10(现在是10月),比如0213这种,那就生成2011-02-13,这种。
求高手给我代码,谢谢!
------解决方案--------------------
- VB code
Private Sub Command1_Click() mydate = Trim(Text1.Text) If Len(mydate) = 4 Then mydate = "2010" & "-" & Mid(mydate, 1, 2) & "-" & Mid(mydate, 3, 2) Text2.Text = mydate Clipboard.SetText (mydate) Exit Sub End If If Len(mydate) = 2 Then mydate = Date - mydate Text2.Text = mydate Clipboard.SetText (mydate) Exit Sub End If End Sub
------解决方案--------------------
是啊,需求的逻辑不严密...
按你大概意思给你个思路,注意如下示例代码如果你输入的月份大于12,或者日期大于当月的最大日子,则返回的日期会按DateSerial函数的规则进位...
- VB code
Function GetDate(ByVal strNum As String) As String Dim dtYear As Long, dtMonth As Long, dtDay As Long If Not IsNumeric(strNum) Then Exit Function dtYear = Year(Date) '当前年份 Select Case Len(strNum) Case 4 dtMonth = Mid(strNum, 1, 2) '得到输入的月 dtDay = Mid(strNum, 3) '得到输入的日 dtYear = dtYear - (dtMonth < Month(Date)) '输入月份小于当前月份,加1年 Case 2 dtMonth = Month(Date) dtDay = Day(Date) + 1 + Val(strNum) '由第二日起加上输入的天数 Case Else GetDate = "输入的字符串" & strNum & "无效" Exit Function End Select GetDate = Format(DateSerial(dtYear, dtMonth, dtDay), "yyyy-MM-dd") End Function Private Sub Form_Activate() Text1.Text = "" Text2.Text = "" Text1.SetFocus Me.KeyPreview = True End Sub Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) Dim strNum As String If KeyCode = vbKeyReturn Then strNum = Text1.Text Text2.Text = GetDate(strNum) Clipboard.SetText Text2.Text Text1.Text = "" End If End Sub