关于VB语言求时间差的运算。

最近因为工作的原因,小女子自学Visual Studio 2019上的VB语言写了个计算器。

目的:求某个时间到某个时间之间的差

上代码:

Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

    If IsDate(TextBox1.Text) And IsDate(TextBox2.Text) And IsDate(TextBox3.Text) Then

        If RadioButton1.Checked Then

            Dim D, L, X As Date
            Dim DA, DB, DC As Long
            Dim RJ, RK As Double

            D = TextBox1.Text
            L = TextBox2.Text
            X = TextBox3.Text

            DA = DateDiff("m", D, L)
            DB = DateDiff("m", L, X)

            Label17.Text = DA Mod 12
            Label20.Text = DA \ 12

            DC = DB + 1
            Label29.Text = DC Mod 12
            Label28.Text = DC \ 12

            If Label29.Text = 0 Then
                RJ = 12 - 12
                RK = 20 - Label28.Text
                Label34.Text = RJ
                Label35.Text = RK
            Else
                RJ = 12 - Label29.Text
                RK = 20 - Label28.Text - 1
                Label34.Text = RK
                Label35.Text = RJ
            End If
            If Label34.Text <= 0 Then
                Label34.Text = 0
                Label35.Text = 0
            End If

            If RadioButton3.Checked Then

                Dim RF, RG As Double
                RF = 10 - Label20.Text - 1
                RG = 12 - Label17.Text
                Label37.Text = RF
                Label38.Text = RG

                If Label17.Text = 0 Then
                    Dim RH, RI As Double
                    RH = 12 - 12
                    RI = 10 - Label20.Text
                    Label37.Text = RI
                    Label38.Text = RH
                End If

                If Label37.Text < 0 Then
                    Dim OA As Double
                    OA = 0
                    Label37.Text = OA
                    Label38.Text = OA
                End If

            Else
                Dim RL, RM As Double
                RL = 5 - Label20.Text - 1
                RM = 12 - Label17.Text
                Label37.Text = RL
                Label38.Text = RM

                If Label17.Text = 0 Then
                    Dim RN, RO As Double
                    RN = 12 - 12
                    RO = 5 - Label20.Text
                    Label37.Text = RO
                    Label38.Text = RN
                End If

                If Label37.Text < 0 Then
                    Dim OA As Double
                    OA = 0
                    Label37.Text = OA
                    Label38.Text = OA
                End If


            End If

        Else

            Dim R, O, J As Date
            Dim RA, RB, RC As Long
            Dim RD, RE As Double


            R = TextBox1.Text
            O = TextBox2.Text
            J = TextBox3.Text

            RA = DateDiff("m", R, "2001.07")
            RB = DateDiff("m", O, J)

            Label17.Text = RA Mod 12
            Label20.Text = RA \ 12

            RC = RB + 1
            Label29.Text = RC Mod 12
            Label28.Text = RC \ 12

            If Label29.Text = 0 Then
                RD = 12 - 12
                RE = 20 - Label28.Text
                Label34.Text = RE
                Label35.Text = RD

            Else
                RD = 12 - Label29.Text
                RE = 20 - Label28.Text - 1
                Label34.Text = RE
                Label35.Text = RD

            End If
            If Label34.Text <= 0 Then
                Label34.Text = 0
                Label35.Text = 0
            End If
            If RadioButton3.Checked Then
                Dim RF, RG As Double

                RF = 10 - Label20.Text - 1
                RG = 12 - Label17.Text
                Label37.Text = RF
                Label38.Text = RG

                If Label17.Text = 0 Then
                    Dim RH, RI As Double
                    RH = 12 - 12
                    RI = 10 - Label20.Text
                    Label37.Text = RI
                    Label38.Text = RH
                End If
                If Label37.Text < 0 Then
                    Dim OA As Double
                    OA = 0
                    Label37.Text = OA
                    Label38.Text = OA
                End If

            Else
                Dim RL, RM As Double
                RL = 5 - Label20.Text - 1
                RM = 12 - Label17.Text
                Label37.Text = RL
                Label38.Text = RM

                If Label17.Text = 0 Then
                    Dim RN, RO As Double
                    RN = 12 - 12
                    RO = 5 - Label20.Text
                    Label37.Text = RO
                    Label38.Text = RN
                End If
                If Label37.Text < 0 Then
                    Dim OA As Double
                    OA = 0
                    Label37.Text = OA
                    Label38.Text = OA
                End If

            End If
        End If
            Else
                If RadioButton1.Checked Then

            TextBox1.Text = 0
                    TextBox2.Text = 2001.07
                    TextBox3.Text = 0
                    Label17.Text = 0
                    Label20.Text = 0
                    Label29.Text = 0
                    Label28.Text = 0
                    Label37.Text = 0
                    Label38.Text = 0
                    Label34.Text = 0
                    Label35.Text = 0
                    MessageBox.Show"需要时间格式是否正确。", “警告!”)
        Else

                    TextBox1.Text = 0
                    TextBox2.Text = 0
                    TextBox3.Text = 0
                    Label17.Text = 0
                    Label20.Text = 0
                    Label29.Text = 0
                    Label28.Text = 0
                       Label37.Text = 0
                        Label38.Text = 0
                    Label34.Text = 0
                       Label35.Text = 0
                    MessageBox.Show"需要检查时间格式是否正确。", “警告!”)
        End If

            End If




End Sub

运行这个代码计算出来的结果

img

正确的值应该为:
视同年限 0 年 0 个月

实际年限 5 年 1 个月

补缴视同 10年 0 个月

补缴实际 14年 11个月

求大佬们帮帮小女子看看我这个是哪里出错了,我是新入行的小萌新,写的代码比较乱,也请大佬们不要嫌弃,拜托了。 因为这个我都快秃了。T.T

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^