回 帖 发 新 帖 刷新版面

主题:如何得出6个月后的最后一天

比如现在是02/06/2009,那么我想要得出的结果是:08/31/2009,在VFP中如何实现呢?

回复列表 (共10个回复)

沙发

我的苯办法:
ct=ctod("2009/02/06")
dd=CTOD(ALLTRIM(STR(YEAR(ct)))+'/'+ALLTRIM(STR(MONTH(ct)+7))+'/01')-1
一定会有高手有好办法

板凳

dDate=DATE()
?gomonth(dDate,7)-day(gomonth(dDate,6))

3 楼

d1=ctod("2009/2/8")
? GOMONTH(d1-DAY(d1),7)

4 楼

应该是这样
d1=GOMONTH(ctod("2009/3/31"),6 +1) && 6 是你要的向前或后的月的数量,用负数表示向前。
? d1 -DAY(d1)

5 楼

求前一个月的最后一天:
d1=GOMONTH(ctod("2009/3/31"),-1 +1)
? d1 -DAY(d1)

6 楼

求当月的最后一天:
d1=GOMONTH(DATE(),0 +1)
? d1 -DAY(d1)

7 楼

*我给你做个函数吧
*其中参数dDate日期型,nMonth数值型,几个月后
*
FUNCTION AfternMonthLDay(dDate,nMonth)
LOCAL lnYear,lnMonth,ldDate ,nYear
lnYear=year(dDate)
lnMonth=MONTH(dDate)+nMonth+1
nYear=INT(lnMonth/12)
lnMonth=lnMonth%12
lnYear=lnYear+nYear
ldDate=CTOD(ALLTRIM(STR(lnYear))+"/"+ALLTRIM(STR(lnmonth))+"/"+"01")-1
RETURN ldDate
ENDFUNC 

可以放在数据库的存储过程中,做到"如影随身"
用法:
open database yourDBC
*然后在程序的任何地方可以调用此函数
?AfternMonthLDay(date(),6)
myDate=AfternMonthLDay(ctod('2009/02/11'),11)
等等

8 楼

rq=date()   &&确定一个日期,可以为任何傎

?=gomonth(rq,7)-day(gomonth(rq,7))





分析:

假如 rq= {^2008/03/12}
测  gomonth(rq,7)={^2008/10/12}

day(gomonth(rq,7))=12
测两者相减=)={^2008/09/30}

9 楼

GOMONTH(DATE()-DAY(DATE()-1),7)-1

10 楼

谢谢各位老师,最近由于出了点状况,没来及时回贴.
我后来用了一个方法,也贴出来给大家看看
mm=month(date()) 
mm=month(date())+7 
if mm>12 
jg=date(year(date())+1,mm-12,1)-1
else 
jg=date(year(date()),mm,1)-1 
endif 
?jg

我来回复

您尚未登录,请登录后再回复。点此登录或注册