一种计算GPS时间的程序,运行结果不对,求解。解决方案

一种计算GPS时间的程序,运行结果不对,求解。。。
GPS时规定1980.1.6.0.0.00(年月日时分秒)为GPS时原点,任意一个时刻的GPS时为与此原点的时间差。表示方法为WeekNum+Second ,即星期数加秒数。2004.5.1.10.5.15 的GPS时为:1268周554715秒。
我的程序:

Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer, a As Integer, b As Integer, c As Single
  x = Text1.Text
  y = Text2
  z = Text3
  a = Text4
  b = Text5
  c = Text6
  
  '另一种是最科学准确的方法,平常年份除以4,能整除(也就是没有余数)就是闰年,逢百年的时候,
  '要用年份除以400,同样也是能整除的就可以判断为闰年
  
  
  Dim i As Integer, j As Long, WeekNumber As Integer, k As Double, second As Double
  j = 361 '距1981年的天数
  For i = 1981 To x - 1 'x年1.1的总天数
  If i Mod 4 = 0 And i Mod 100 <> 0 Or i Mod 400 = 0 Then
  j = j + 366
  Else
  j = j + 365
  End If
  Next i

'到x年月 日的天数
If x Mod 4 = 0 And x Mod 100 <> 0 Or x Mod 400 = 0 Then '闰年记日
  Select Case y '月的天数
  Case y = 1
  j = j + 0
  Case y = 2
  j = j + 31
  Case y = 3
  j = j + 60
  Case y = 4
  j = j + 91
  Case y = 5
  j = j + 121
  Case y = 6
  j = j + 152
  Case y = 7
  j = j + 182
  Case y = 8
  j = j + 213
  Case y = 9
  j = j + 244
  Case y = 10
  j = j + 274
  Case y = 11
  j = j + 305
  Case y = 12
  j = j + 335
  End Select
Else
  Select Case y '月的天数
  Case y = 1
  j = j + 0
  Case y = 2
  j = j + 31
  Case y = 3
  j = j + 59
  Case y = 4
  j = j + 90
  Case y = 5
  j = j + 120
  Case y = 6
  j = j + 151
  Case y = 7
  j = j + 181
  Case y = 8
  j = j + 212
  Case y = 9
  j = j + 243
  Case y = 10
  j = j + 273
  Case y = 11
  j = j + 304
  Case y = 12
  j = j + 334
  End Select
 End If
  j = j + z - 1

  WeekNumber = j \ 7
  k = j Mod 7
  second = CDbl(k) * 24 * 3600 + CDbl(a) * 3600 + CDbl(b) * 60 + c

  Text7.Text = second
  Text8.Text = WeekNumber
End Sub
 我的计算结果:1251周381915秒。总是闰年那块也没有写错,忘大家指导啊!




------解决方案--------------------
VB code

Function GetGPSDate(pDate As Date) As String
    Dim week As Long
    Dim sec As Long
    Const BASEDATE As Date = "1980-1-6 0:0:00"
    week = DateDiff("w", BASEDATE, pDate)
    sec = DateDiff("s", DateAdd("ww", week, BASEDATE), pDate)
    GetGPSDate = week & "周" & sec & "秒"
End Function

Private Sub Command1_Click()
    '2004.5.1.10.5.15 的GPS时为:1268周554715秒。
    Dim dt As Date
    dt = "2004-5-1 10:5:15"
    MsgBox GetGPSDate(dt)
End Sub