Office中国论坛/Access中国论坛

标题: ##自定义日期代码怪异问题 [打印本页]

作者: sf    时间: 2003-12-23 22:38
标题: ##自定义日期代码怪异问题
请教各位大侠:
如果修改系统时间在2003年12月21日---2004年1月20日,以下代码,函数myday()和myday2()的值应该分别为03-11-21日和03-12-20日,为何在日期段2003年12月21日---2003年12月31日内,我得到的值却为02-11-21日和02-12-20日。结果是错误的。系统时间在每年的12月21日---12月31日都是如此,在年份上出错误。其它时间就无问题。请指点。
--------------------------------
Option Compare Database
Function Totalmonth(dteinput As Date) As Integer
Dim intdays As Integer
intdays = DateSerial(Year(dteinput), Month(dteinput) + 1, day(dteinput)) _
    - DateSerial(Year(dteinput), Month(dteinput), day(dteinput))
    Totalmonth = intdays
    Debug.Print intdays
End Function


Function MyMonth() As String
'获取月份编号的函数,如果月份大于9,代号分别为A(10)、B(11)、C(12),如果小于或等于,代号就等于月份。
    Dim MonthName, a As String
    a = Format(Date, "dd")
    Select Case a
    Case Is <= 20
      MyMonth = Format(Date, "mm")
    Case Is > 20
      MyMonth = Format(CDate(Format(Now(), "yyyy/mm/") & Totalmonth(Now())) + 1, "MM")
End Select
End Function



Function FirstdayOfmyMonth()
Dim D As Integer, M As Integer, Y As Integer
   
        D = Format(Date, "dd")
        M = MyMonth() - 2
        Y = Format(Date, "yyyy")
        FirstdayOfmyMonth = DateSerial(Y, M, 1)
   
End Function

Function myday()

        myday = FirstdayOfmyMonth() + 20
   
End Function
Function lastdayOfmyMonth()
Dim D As Integer, M As Integer, Y As Integer
   
        D = Format(Date, "dd")
        M = MyMonth() - 1
        Y = Format(Date, "yyyy")
        lastdayOfmyMonth = DateSerial(Y, M, 1)
   
End Function

Function myday2()

        myday2 = lastdayOfmyMonth() + 19
   
End Function














[此贴子已经被作者于2003-12-24 8:02:31编辑过]


作者: sf    时间: 2003-12-24 16:09
请高手们指教!
作者: wuyuanhui    时间: 2003-12-24 17:51
可能与系统日期格式有关,请在"控制面板"--"区域选项"--"日期"将短日期格式设定为"yyyy-mm-dd"
作者: sf    时间: 2003-12-24 17:57
谢谢,我试了一下,与系统日期格式没有关系,问题依旧!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3