读书人

求计算日期的几行代码,该如何解决

发布时间: 2012-03-30 17:32:09 作者: rapoo

求计算日期的几行代码
要有一个输入框,一个显示框,当输入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 SubEnd IfIf Len(mydate) = 2 Then    mydate = Date - mydate    Text2.Text = mydate    Clipboard.SetText (mydate)    Exit SubEnd IfEnd 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 FunctionPrivate Sub Form_Activate()    Text1.Text = ""    Text2.Text = ""    Text1.SetFocus    Me.KeyPreview = TrueEnd SubPrivate 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 IfEnd Sub 

读书人网 >VB

热点推荐