时间问题!!(奉上100分,望笑纳!)

heavenchuang 2003-08-26 01:00:05
例如,今天是8月25日,在今天用如下表达式来判断:
daymm = DateDiff("d", Date, DateAdd("m", 1, Date)) - Day(Date)
8月24日到8月31日应有的剩余天数(应该是7天)。可是,我写的表达式判断出来是6天,如果将表达式改为:
daymm = DateDiff("d", Date, DateAdd("m", 1, Date)) - (Day(Now) - 1)
就可以判断出来是7天。
但是,当时间走到9月1日时,按照改过的表达式判断出来则是31天。而我要的结果是在9月1日判断时剩余的天数应该为0天,再由于这个剩余天数的结果是要作为被除数使用,所以,当剩余天数的结果为0时,必须将0转化为1,
不知道这个例子在每一个月的计算判断中如何实现,望各位大虾指教!(奉上100分,望笑纳!)
还有就是,当明年的1月1日时来判断今年的12月31日又该如何写此表达式,望详解!
...全文
30 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
iiboy 2003-08-27
  • 打赏
  • 举报
回复
直接用日期相减吧,试试看,能行么.
cdate("2002-8-31")-date()
heavenchuang 2003-08-27
  • 打赏
  • 举报
回复
小弟再次谢谢各位了!散分!
mjznet 2003-08-27
  • 打赏
  • 举报
回复
我从你的文字描述,感觉你是要算当月的剩余天数.如果真的是这样,你的表达式根本就不对!
这样写:
NextMonth = DateAdd("m",1,date)
DiffDays=(DateSerial(Year(NextMonth),Month(NextMonth),1)-1)-date
rainstormmaster 2003-08-27
  • 打赏
  • 举报
回复
怎么好象在不停的打补丁?

关于楼主的问题,我体会就是要计算一个日期的前一天和 该日期的前一天 的当月最后一天的相差天数,不知对也不对:

Private Sub Command1_Click()

MsgBox GetDiffNum(#1/1/1999#)

End Sub


'函数GetDiffNum,功能:计算 mdate的前一天和 mdate的前一天 的当月最后一天的相差天数

Private Function GetDiffNum(ByVal mdate As Date) As Long
Dim mFirstDayOfNextMonth As Date
Dim mYesterDay As Date
mYesterDay = YesterDay(mdate)
mFirstDayOfNextMonth = FirstDayOfNextMonth(mYesterDay)
'计算 mdate的前一天和 mdate的前一天 的下一个月的第一天的相差天数(这个绕嘴)
GetDiffNum = DateDiff("d", mYesterDay, mFirstDayOfNextMonth)
'计算 mdate的前一天和 mdate的前一天 的当月最后一天的相差天数
GetDiffNum = GetDiffNum - 1
End Function

'函数YesterDay,功能:取得mdate的前一天

Private Function YesterDay(ByVal mdate As Date) As Date
YesterDay = DateAdd("d", -1, mdate)
End Function


'函数FirstDayOfNextMonth,功能:取得mdate的下一个月的第一天

Private Function FirstDayOfNextMonth(ByVal mdate As Date) As Date
Dim YearNum As Integer
Dim MonthNum As Integer
Dim DayNum As Integer
Dim TempDate As Date
'取得下一个月当日
TempDate = DateAdd("m", 1, mdate)
'取得下一个月第一天所对应的年、月、日数值
YearNum = CInt(year(TempDate))
MonthNum = CInt(Month(TempDate))
DayNum = 1 '肯定是1
'根据取得的数值,用DateSerial函数进行日期合成
FirstDayOfNextMonth = DateSerial(YearNum, MonthNum, DayNum)
End Function
heavenchuang 2003-08-26
  • 打赏
  • 举报
回复
麻烦仁兄了,将Date改为8月31日,此表达式算出的结果确实是1,但是我要的是在第二天(也就是9月1日这一天)来计算前一天(8月31日)距离8月31日还有几天。实际上就是以此类推的在第二天计算头天距离当月最后一天还剩余多少天!
girl888 2003-08-26
  • 打赏
  • 举报
回复
你写的也太麻烦了
Sunron128 2003-08-26
  • 打赏
  • 举报
回复
你將Date換成你要判斷的日期試試看
heavenchuang 2003-08-26
  • 打赏
  • 举报
回复
楼上的兄弟,小弟试了一下,还是不对呀!算出来是30天。
可是我有个问题是当当前日期为9月1日时,我要在9月1日时利用该表达式判断八月31日离8月31日的剩余天数(应该是0天)。望指教!
Sunron128 2003-08-26
  • 打赏
  • 举报
回复
第一步: 先取得當月最後一天的日期.
LastDate = DateAdd("d",-1,CDate(Year(DateAdd("M",1,Date)) & "-" & Month(DateAdd("M",1,Date)) & "-01"))
第二步: 計算當天到當月最後一天的天數.
DayNum = DateDiff("d",Date,LastDate) + 1
heavenchuang 2003-08-26
  • 打赏
  • 举报
回复
Suron128(辰龍) ,你好谢谢你的表达式,可是我有个问题是当当前日期为9月1日时,我要在9月1日时利用该表达式判断八月31日离8月31日的剩余天数。望指教!
heavenchuang 2003-08-26
  • 打赏
  • 举报
回复
和最后一天比较!
没有说清楚的地方在这里加以补充!
但是,当当前日期为9月1日时,按照表达式daymm = DateDiff("d", Date, DateAdd("m", 1, Date)) - (Day(Now) - 1)
判断出来则是31天。而我要的结果是在9月1日时利用该表达式判断八月31日离8月31日的剩余天数。(应该为0天),然后将这个剩余天数的结果是要作为被除数使用,被除数不能为0,所以,当剩余天数的结果为0时,必须将0转化为1,
不知道如何实现,望各位大虾指教!
Sunron128 2003-08-26
  • 打赏
  • 举报
回复
daymm = DateDiff("d", Date, DateAdd("m", 1, Date)) - Day(Date) + 1
Sunron128 2003-08-26
  • 打赏
  • 举报
回复
如果是當天的前一天到年末的話,可以寫成:

Dayss = DateDiff("d",DateAdd("d",-1,Date),LastDate)+1
Sunron128 2003-08-26
  • 打赏
  • 举报
回复
Dim LastDate As Date
Dim DaySS As Long

If Month(Date) = 1 Then
LastDate = CDate(Year(Date) - 1 & "-12-31")
Else
LastDate = CDate(Year(Date) & "-12-31")
End If

DaySS = DateDiff("d", Date, LastDate) + 1
heavenchuang 2003-08-26
  • 打赏
  • 举报
回复
我是用这个表达式计算当前日期距离年末的剩余天数的
dayss = DateDiff("d", Date, CDate(Year(Date) & "-12-31"))

特此说明:请另外解答!不是与月份在一起。
heavenchuang 2003-08-26
  • 打赏
  • 举报
回复
小弟不才,上述月份中的问题解决了,但是如果是年初(假设2004年1月1日)那天计算2003年12月31日距离2003年12月31日还有多少天,计算方式与月份中的一样,只是这里是计算当前日前距离年末(12月31日)的剩余天数!还望解答!
lazycat818 2003-08-26
  • 打赏
  • 举报
回复
离下一个月还有几天?

Dim dt As Date
Dim y As Long
Dim m As Long
Dim d As Long

y = Year(Now)
m = Month(Now)

If m = 12 Then
y = y + 1
m = 1
Else
m = m + 1
End If

Dim s As String
s = y & "-" & m & "-" & 1


dt = CDate(s)

daymm = DateDiff("d", Now, dt)


lazycat818 2003-08-26
  • 打赏
  • 举报
回复
真的看不懂你到底想做什么?
wyr521 2003-08-26
  • 打赏
  • 举报
回复
自己看一下书
收缩一下
rainstormmaster 2003-08-26
  • 打赏
  • 举报
回复
看了半天,也没看懂,你的规则是什么?

和每月的第1天比较还是和最后一天比较?
加载更多回复(1)

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧