注册 登录
编程论坛 VFP论坛

两个时间的月份差

tbk_lcy 发布于 2023-04-18 11:05, 359 次点击
请教:两个时间(格式为年月日)相差月份数如何计算?
15 回复
#2
laowan0012023-04-18 11:23
MONTH(时间2)-MONTH(时间1)
#3
tbk_lcy2023-04-18 11:32
回复 2楼 laowan001
这个同一年可以,跨年度不行吧
#4
csyx2023-04-18 11:52
(Year(d2) - Year(d1))*12 + (Month(d2) - Month(d1))
#5
星光悠蓝2023-04-18 12:08
只有本站会员才能查看附件,请 登录

更正:=IIF(Y1=Y2,M2-M1,M2+(y2-y1)*12-M1)

[此贴子已经被作者于2023-4-18 13:42编辑过]

#6
csyx2023-04-18 12:26
.....

[此贴子已经被作者于2023-4-18 12:35编辑过]

#7
星光悠蓝2023-04-18 12:29
回复 6楼 csyx
没有乘上年份差
#8
sdta2023-04-18 12:56
以下是引用tbk_lcy在2023-4-18 11:05:29的发言:

请教:两个时间(格式为年月日)相差月份数如何计算?

是否包括开始月份和结束月份
#9
xuminxz2023-04-18 16:00
d1,d2是两个日期或日期时间变量
delta=MONTH(d2)-MONTH(d1)+(YEAR(d2)-YEAR(d1))*12
#10
fyyylyl2023-04-18 16:05
    nMonth=0
IF YEAR(d1)#YEAR(d2) OR MONTH(d1)#MONTH(d2)
    DO WHILE  .t.
        dn=GOMONTH(MIN(d1,d2),nMonth+1)
        IF dn>MAX(d1,d2)
            EXIT
        ELSE
            nMonth=nMonth+1
        ENDIF
    ENDDO
ENDIF
?nMonth
#11
shizi02023-04-19 22:28
set date ansi
?Mod(Abs(Val(dtoc(d1))-Val(dtoc(d2)))*100,88)
#12
sdta2023-04-19 22:37
以下是引用shizi0在2023-4-19 22:28:58的发言:

set date ansi
?Mod(Abs(Val(dtoc(d1))-Val(dtoc(d2)))*100,88)

d1 = DATE(2021, 11, 01)
d2 = DATE(2022, 12, 01)
? Abs(Val(dtoc(d1))-Val(dtoc(d2)))
?Mod(Abs(Val(dtoc(d1))-Val(dtoc(d2)))*100,88)
#13
fyyylyl2023-04-20 10:29
以下是引用sdta在2023-4-19 22:37:41的发言:


d1 = DATE(2021, 11, 01)
d2 = DATE(2022, 12, 01)
? Abs(Val(dtoc(d1))-Val(dtoc(d2)))
?Mod(Abs(Val(dtoc(d1))-Val(dtoc(d2)))*100,88)

d1 = DATE(2023,03, 31)
d2 = DATE(2023, 04,01)
?Mod(Abs(Val(dtoc(d1))-Val(dtoc(d2)))*100,88)结果为1,不知是否符合楼主本意?
#14
sostemp2023-04-20 11:16
以下是引用fyyylyl在2023-4-20 10:29:22的发言:


d1 = DATE(2023,03, 31)
d2 = DATE(2023, 04,01)
?Mod(Abs(Val(dtoc(d1))-Val(dtoc(d2)))*100,88)结果为1,不知是否符合楼主本意?


这个=12
#15
吹水佬2023-04-20 11:53
好像只考虑“年、月”,不知对“日”有无要求?如:
2023/01/01 - 2023/01/01  
2023/01/01 - 2023/01/31
#16
东海ECS2023-04-21 22:08
可以采取以下方法来计算两个时间的月份差:

将两个时间转换为时间戳,即从某个固定的时间(如1970年1月1日)开始计算的秒数。

将两个时间戳转换为对应的年份和月份,计算两个时间对应的年份和月份差。

计算两个时间之间的月份差,可以采用以下公式:

月份差 = (结束年份 - 开始年份)* 12 + 结束月份 - 开始月份


需要注意的是,计算月份差时,需要判断两个时间之间是否存在不满一个月的时间段。如果存在不满一个月的时间段,则月份差需要减去该时间段的月份。例如,如果开始时间是2021年1月1日,结束时间是2021年2月15日,则月份差为1个月,而不是2个月。
1