如何在VB 中使用datediff计算某开始日期到结束日期之间的月数,并均分到每年

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在VB 中使用datediff计算某开始日期到结束日期之间的月数,并均分到每年相关的知识,希望对你有一定的参考价值。

在text1中输入200803-200907
kssj = Left(Me.Text1.Text, 4) & "- " & Mid(Me.Text1.Text, 5, 2) '开始时间
jssj = Mid(Me.Text1.Text, 8, 4) & "- " & Mid(Me.Text1.Text, 12, 2) '结束时间
yf = DateDiff("M", kssj, jssj)

结果是16,表示共有16个月,这个我明白

需要的结果是这样的:
1999年度 0 个月
2000年度 0 个月
...
2007年度 0 个月
2008年度 9 个月
2009年度 7 个月
2010年度 0 个月
2011年度 0 个月
求代码 追分200

并求同好交流
@回1楼的 用的mid得到的日期,在TEXT1输入的时候做有效性判断
===========================================================
补充下,另有Text2中的日期,也是如此计算,要求返回结果能同时得出text1和text2中的每年包含的月数

例如:
text1 输入 200104-200209 '计算结果为17个月
text2 输入 200405-200903 '计算结果为58个月
'手工输入的text1和text2,不会重复

要求得到结果:
1999年度 0 个月
2000年度 0 个月
2001年度 8 个月
2002年度 9 个月
2003年度 0 个月
2004年度 7 个月
2005年度 12个月
....
2008年度 12个月
2009年度 3 个月
2010年度 0 个月

Option Explicit

Private Sub Command1_Click()
dCount Text1.Text
dCount Text2.Text
End Sub

Private Sub Form_Load()
Text1.Text = "200803-200907"
Text2.Text = "200405-200903"
End Sub

Private Sub dCount(sStr As String)
Dim kssj As Date, jssj As Date
Dim yf As Integer, i As Integer
kssj = Left(sStr, 4) & "-" & Mid(sStr, 5, 2) & "-01"
jssj = Mid(sStr, 8, 4) & "-" & Right(sStr, 2) & "-01"
yf = DateDiff("m", kssj, jssj)

Print sStr & ":"
For i = 1999 To Year(Date)
If i >= Val(Year(kssj)) And i <= Val(Year(jssj)) Then
If i = Year(kssj) Then
Print i & "年度 " & 12 - Month(kssj) & " 个月"
ElseIf i = Year(jssj) Then
Print i & "年度 " & (yf - (12 - Month(kssj))) Mod 12 & " 个月"
Else
Print i & "年度 12 个月"
End If
Else
Print i & "年度 0 个月"
End If
Next
End Sub
参考技术A 1999年度?2011年度?你给的日期是200803-200907
这个怎么跳转到1999去?麻烦详细说明
终于看懂了,等待代码!
参考技术B 看不大懂 在线交流吧 分数我很想要啊
需要的结果 这个不明白

SQL 日期相减(间隔)datediff函数

参考技术A (转)SQL中关于日期相减的计算方法

selectdatediff(year, 开始日期,结束日期);--两日期间隔年

selectdatediff(quarter, 开始日期,结束日期);--两日期间隔季

selectdatediff(month, 开始日期,结束日期);--两日期间隔月

selectdatediff(day, 开始日期,结束日期);--两日期间隔天

selectdatediff(week, 开始日期,结束日期);--两日期间隔周

selectdatediff(hour, 开始日期,结束日期);--两日期间隔小时

selectdatediff(minute, 开始日期,结束日期);--两日期间隔分

selectdatediff(second, 开始日期,结束日期);--两日期间隔秒

以上是关于如何在VB 中使用datediff计算某开始日期到结束日期之间的月数,并均分到每年的主要内容,如果未能解决你的问题,请参考以下文章

如何在VB中计算两个日期间的天数

关于vb 中的日期时间函数

在vb里,如何将日期加减,得出天数?

VB计算两个日期时间的间隔

SQL是计算两个日期相差多少天数的函数?

vb计算一个月多少天 datediff