标题: ##自定义日期代码怪异问题 [打印本页] 作者: 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
谢谢,我试了一下,与系统日期格式没有关系,问题依旧!