home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 6_2008-2009.ISO / data / zips / Date_Time2200143192011.psc / Calendar.bas < prev    next >
BASIC Source File  |  2011-03-20  |  18KB  |  531 lines

  1. Attribute VB_Name = "Calendar"
  2. Option Explicit
  3.  
  4. Function DayBy_Year(DateNows As String, ToYear As Long) As Integer
  5. Dim s_nDatas_D() As String
  6.  
  7. GetString DateNows & "/", "/", s_nDatas_D()
  8.  
  9. DayBy_Month = DayCount(DateNows, DateBy_AddYearOnYear(DateNows, ToYear, 3))  '+ 1
  10. Hapus
  11. '30/10/1009 1500
  12. End Function
  13.  
  14. Function DayBy_Month(DateNows As String, ToMonth As Long, Optional OutDate As String) As Long
  15. 'MsgBox DateNows & " " & DateBy_AddMonthOnMonth(DateNows, ToMonth - 0, 3)
  16. 'DateBy_AddMonthOnMonth
  17. Dim s_nMonth As Integer, s_Day As Long, s_YearNow As Integer
  18.  
  19. OutDate = DateBy_AddMonthOnMonth(DateNows, ToMonth - 0, s_Day, s_Year)
  20. DayBy_Month = DayCount(DateNows, OutDate) + 0
  21. 'DayBy_Month = DayCount(DateNows, DateBy_AddMonthOnMonth(DateNows, ToMonth, 3)) + 0
  22.  
  23. End Function
  24.  
  25. Function AddDayOnDay()
  26.  
  27. End Function
  28.  
  29. Function AddDayOnMonth(DateNows As String, ToDay As Long, Month As Integer, Optional ByRef TestError As Integer) As Integer
  30. Dim s_iX As Integer, s_MonthToDay As Integer, s_TMPMonthToDay As Integer
  31. Dim s_nDatas_D() As String, s_YearNow As Integer, s_DayCek As Integer
  32. Dim s_nMonth As Integer, s_Day As Integer, s_Month As Integer, s_Year As Integer
  33. Dim s_ToDay As Long, s_iMonth As Integer
  34. 'DateNows = "2/1/2009"
  35. 'ToDay = 364
  36. GetString DateNows & "/", "/", s_nDatas_D()
  37. s_Month = s_nDatas_D(1)
  38. s_Year = s_nDatas_D(2)
  39.  
  40. 's_ToDay = AddDayOnYear(DateNows, ToDay, s_YearNow) ' + 1
  41. s_ToDay = ToDay ' - 365
  42. 'MsgBox ToDay - s_ToDay
  43. ToDay = ToDay + Val(s_nDatas_D(0))
  44. If ToDay >= MonthToDay(12, Val(s_nDatas_D(2))) Then
  45.     'If TestError > 0 Then ToDay = ToDay - 1
  46.     'TestError = (s_ToDay \ 365) * 12
  47.     ToDay = AddDayOnYear(DateNows, ToDay - Val(s_nDatas_D(0)), s_YearNow) - 0
  48.     's_ToDay = 1
  49.     Month = 12 - Val(s_nDatas_D(1)) '<---------- HAPUS
  50.     s_DayCek = nJumlahHari(Val(s_nDatas_D(1)), Val(s_nDatas_D(2))) '<---------- HAPUS
  51.     If s_DayCek = (s_DayCek - Val(s_nDatas_D(0))) + 1 Then Month = Month + 1 '<---------- HAPUS
  52.     Month = (s_YearNow - Val(s_nDatas_D(2))) * 12
  53.     s_nDatas_D(0) = "1"
  54.     s_nDatas_D(1) = "1"
  55.     s_nDatas_D(2) = s_YearNow
  56. End If
  57.  
  58. s_iX = Val(s_nDatas_D(1)) - 1
  59. s_nMonth = s_nMonth + s_iX
  60. Do
  61.     s_iX = s_iX + 1
  62.     s_nMonth = s_nMonth + 1
  63.     If s_iX > 12 Then
  64.         s_iX = 1
  65.         s_nDatas_D(2) = Val(s_nDatas_D(2)) + 1
  66.     End If
  67.     s_TMPMonthToDay = s_MonthToDay
  68.     s_MonthToDay = s_MonthToDay + nJumlahHari(s_iX, Val(s_nDatas_D(2)))
  69.         
  70.     If s_MonthToDay >= ToDay Then
  71.         Dim sPusing As Integer
  72.         Month = Month + s_nMonth '- 1 's_DayCek
  73.         AddDayOnMonth = ToDay - s_TMPMonthToDay
  74.         
  75.         
  76.         'Form1.Command2.Caption = Month - s_Month & " " & s_TMPMonthToDay 'Month - 12 'Month - s_Month 's_TMPMonthToDay & " " & s_MonthToDay & " " & s_iX
  77.         'TestError = Month - s_Month
  78.         
  79.         
  80.         'Form1.Command2.Caption = (Month - s_Month) Mod 12
  81.         If (Month - s_Month) Mod 12 <> 0 Then TestError = YearToYearInDay(s_Year, s_Year + ((Month - s_Month) \ 12)) _
  82.         Else TestError = 0
  83.         'TestError = YearToYearInDay(s_Year, Val(s_nDatas_D(2)) - 1)
  84.         'TestError = YearToYearInDay(s_Year, s_Year + ((Month) \ 12))
  85.         TestError = s_ToDay - TestError '+ 5
  86.         'If TestError < 0 Then TestError = s_ToDay
  87.         If TestError >= 0 Then
  88.             'If s_Year <> Val(s_nDatas_D(2)) Then s_Year = Val(s_nDatas_D(2)) - 1
  89.             's_Year = 2008
  90.             s_iX = s_Month
  91.             Do
  92.                 sPusing = sPusing + nJumlahHari(s_iX, s_Year)
  93.                 If sPusing > TestError Then Exit Do
  94.                 'If TestError < MonthToDay(s_iX, Val(s_nDatas_D(2))) Then Exit Do
  95.                 s_iX = s_iX + 1
  96.                 If s_iX > 12 Then s_iX = 1: s_Year = s_Year + 1
  97.                 s_iMonth = s_iMonth + 1
  98. '                Stop
  99.             Loop
  100.             'If TestError = MonthToDay(s_iX - 1, Val(s_nDatas_D(2))) Then Stop 's_iMonth = s_iMonth + 1
  101.             'MsgBox MonthToDay(s_iX, Val(s_nDatas_D(2)))
  102.             'Form1.Caption = TestError & " " & ((((Month - s_Month) \ 12)) * 12) & " " & s_iMonth
  103.             If (Month - s_Month) Mod 12 <> 0 Then TestError = ((((Month - s_Month) \ 12)) * 12) + s_iMonth _
  104.             Else TestError = s_iMonth  '(((Month - s_Month) \ 12) * 12) + (Month - s_Month) \ 12 '- Val(ghg) ' & " " & ghg
  105.         Else
  106.             TestError = Month - s_Month ' - 1
  107.         End If
  108.         Exit Do
  109.     Else
  110.     End If
  111. Loop
  112.  
  113. 'Form1.Command2.Caption = s_iMonth & " " & Month
  114. End Function
  115.  
  116. Function AddDayOnYear(DateNows As String, ToDay As Long, YearNow As Integer) As Long
  117. Dim s_nDatas_D() As String, s_DayCount As Long, s_DayCountTo As Long
  118. Dim s_YearToYearInDay As Long
  119.  
  120. GetString DateNows & "/", "/", s_nDatas_D()
  121.  
  122. ''If ToDay < MonthToDay(12, Val(s_nDatas_D(2))) Then Stop
  123.  
  124. s_DayCount = DayCount(DateNows, "31/12/" & s_nDatas_D(2)) + 1
  125. s_DayCount = ToDay - s_DayCount
  126.  
  127. YearNow = s_DayCount \ 365
  128. YearNow = YearNow + Val(s_nDatas_D(2))
  129.  
  130. Do
  131.     s_YearToYearInDay = YearToYearInDay(Val(s_nDatas_D(2)), YearNow)
  132.     AddDayOnYear = s_DayCount - s_YearToYearInDay
  133.     If AddDayOnYear < 0 Then YearNow = YearNow - 1 Else Exit Do
  134. Loop
  135. AddDayOnYear = AddDayOnYear + 1
  136. YearNow = YearNow + 1
  137. End Function
  138.  
  139. Function MonthBy_Day(DateNows As String, ToDay As Long)
  140. Dim s_nDatas_D() As String, s_nDatas_E() As String
  141. Dim s_Day As Long, s_Month As Integer, s_Year As Integer
  142. Dim s_iX As Integer, s_Int As Integer, s_Log As Long, s_y As Integer
  143.  
  144. GetString DateNows & "/", "/", s_nDatas_D()
  145. GetString DateBy_AddDayOnDay & "/", "/", s_nDatas_E()
  146.  
  147. s_Day = s_Log
  148. If s_Day >= MonthToDay(12, Val(s_nDatas_D(2))) Then
  149.     s_Log = DayCount(DateNows, "1/1/" & Val(s_nDatas_D(2)) + 1)
  150.     s_Day = s_Day - s_Log
  151.     MonthOut = MonthCount(DateNows, "1/1/" & Val(s_nDatas_D(2)) + 1)
  152.     If s_Day >= MonthToDay(12, Val(s_nDatas_D(2)) + 1) Then
  153.         s_Log = DayCount("1/1/" & Val(s_nDatas_D(2)) + 1, "1/1/" & Val(s_nDatas_E(2)))
  154.         s_Day = s_Day - s_Log
  155.         MonthOut = MonthOut + MonthCount("1/1/" & Val(s_nDatas_D(2)) + 1, "1/1/" & Val(s_nDatas_E(2)))
  156.         s_nDatas_D(1) = "1"
  157.         s_nDatas_D(2) = s_nDatas_E(2)
  158.     Else
  159.         s_nDatas_D(1) = "1"
  160.         s_nDatas_D(2) = Val(s_nDatas_D(2)) + 1
  161.     End If
  162. End If
  163.  
  164. s_Month = Val(s_nDatas_D(1))
  165. s_Year = Val(s_nDatas_D(2))
  166. Do
  167.     s_Log = nJumlahHari(s_Month, s_Year)
  168.     If s_Day >= s_Log Then
  169.         MonthOut = MonthOut + 1
  170.         s_Day = s_Day - s_Log
  171.     Else
  172.         Exit Do
  173.     End If
  174.     s_Month = s_Month + 1
  175.     If s_Month > 12 Then
  176.         s_Month = 1
  177.         s_Year = s_Year + 1
  178.     End If
  179. Loop
  180. End Function
  181.  
  182. Function aXXXXAddDayOnMonth(DateNows As String, ToDay As Long, Month As Integer, Optional TestError As Integer) As Integer
  183. Dim s_iX As Integer, s_MonthToDay As Integer, s_TMPMonthToDay As Integer
  184. Dim s_nDatas_D() As String, s_YearNow As Integer, s_DayCek As Integer
  185. Dim s_nMonth As Integer
  186.  
  187.  
  188. DateNows = "2/1/2009"
  189. ToDay = 363
  190.  
  191. GetString DateNows & "/", "/", s_nDatas_D()
  192.  
  193. ToDay = ToDay + Val(s_nDatas_D(0))
  194. If ToDay >= MonthToDay(12, Val(s_nDatas_D(2))) Then
  195.     'If TestError > 0 Then ToDay = ToDay - 1
  196.     ToDay = AddDayOnYear(DateNows, ToDay - TestError, s_YearNow) - 0
  197.     Month = 12 - Val(s_nDatas_D(1))
  198.     s_DayCek = nJumlahHari(Val(s_nDatas_D(1)), Val(s_nDatas_D(2)))
  199.     If s_DayCek = (s_DayCek - Val(s_nDatas_D(0))) + 1 Then Month = Month + 1
  200.     Month = (s_YearNow - Val(s_nDatas_D(2))) * 12
  201.     s_nDatas_D(0) = "1"
  202.     s_nDatas_D(1) = "1"
  203.     s_nDatas_D(2) = s_YearNow
  204. End If
  205.  
  206. s_iX = Val(s_nDatas_D(1)) - 1
  207. s_nMonth = s_nMonth + s_iX
  208. Do
  209.     s_iX = s_iX + 1
  210.     s_nMonth = s_nMonth + 1
  211.     If s_iX > 12 Then s_iX = 1
  212.     s_TMPMonthToDay = s_MonthToDay
  213.     s_MonthToDay = s_MonthToDay + nJumlahHari(s_iX, Val(s_nDatas_D(2)))
  214.     
  215.     If s_MonthToDay >= ToDay Then
  216.         Month = Month + s_nMonth '- 1 's_DayCek
  217.         AddDayOnMonth = ToDay - s_TMPMonthToDay
  218. '        DateNext = Format(ToDay - s_TMPMonthToDay, "0#") & "/" & Format(s_iX, "0#")
  219.         Exit Do
  220.     End If
  221. Loop
  222. End Function
  223.  
  224. Function DateTimeOnDay(DateTimeNows As String, OnDay As Long) As String
  225. Dim s_nDatas_DTNow() As String, s_nDatas_D() As String
  226. Dim s_YearNow As Integer, s_MonthNow As Integer, s_DayNow As Long
  227.  
  228. s_DayNow = OnDay
  229.  
  230. GetString DateTimeNows & " ", " ", s_nDatas_DTNow()
  231. GetString s_nDatas_DTNow(0) & "/", "/", s_nDatas_D()
  232.  
  233. s_DayNow = AddDayOnYear(s_nDatas_DTNow(0), s_DayNow, s_YearNow)
  234. s_DayNow = AddDayOnMonth("0/1/" & s_YearNow, s_DayNow, s_MonthNow)
  235.  
  236. 's_DayNow = s_DayNow - 1
  237. DateTimeOnDay = Format(s_DayNow, "0#") & "/" & Format(s_MonthNow, "0#") & "/" & s_YearNow
  238. End Function
  239.  
  240. Function XXXMonthModDay(DateNows As String, ToDay As Long, Month As Integer) As Integer
  241. Dim s_iX As Integer, s_MonthToDay As Integer, s_TMPMonthToDay As Integer
  242. Dim s_nDatas_D() As String, s_YearNow As Integer, s_DayCek As Integer
  243. Dim s_nMonth As Integer
  244.  
  245. GetString DateNows & "/", "/", s_nDatas_D()
  246.  
  247. If ToDay > MonthToDay(12, Val(s_nDatas_D(2))) Then
  248.     ToDay = YearModDay(DateNows, ToDay, s_YearNow) - 1
  249.     Month = 12 - Val(s_nDatas_D(1))
  250.     s_DayCek = nJumlahHari(Val(s_nDatas_D(1)), Val(s_nDatas_D(2)))
  251.     If s_DayCek = (s_DayCek - Val(s_nDatas_D(0))) + 1 Then Month = Month + 1
  252.     Month = (s_YearNow - Val(s_nDatas_D(2))) * 12
  253.     s_nDatas_D(0) = "1"
  254.     s_nDatas_D(1) = "1"
  255.     s_nDatas_D(2) = s_YearNow
  256. Else
  257.     Month = Val(s_nDatas_D(1)) - 1
  258.     s_DayCek = nJumlahHari(Val(s_nDatas_D(1)), Val(s_nDatas_D(2)))
  259.     If s_DayCek <> (s_DayCek - Val(s_nDatas_D(0))) + 1 Then
  260.         s_DayCek = ToDay - (s_DayCek - Val(s_nDatas_D(0)))
  261.         If s_DayCek > 0 Then
  262.             If ToDay > nJumlahHari(Val(s_nDatas_D(1)) + 1, Val(s_nDatas_D(2))) Then
  263.             ToDay = s_DayCek
  264.                 s_iX = Val(s_nDatas_D(1)) '+ 1
  265.                 s_DayCek = 0
  266.                 s_nMonth = 0
  267.             End If
  268.         Else
  269.             s_DayCek = 0
  270.             s_nMonth = s_iX
  271.         End If
  272.         'Stop
  273.     Else
  274.         s_DayCek = 0
  275.         s_nMonth = s_iX
  276.     End If
  277. End If
  278.  
  279.  
  280. 's_iX = Val(s_nDatas_D(1)) - 1
  281. Do
  282.     s_iX = s_iX + 1
  283.     s_nMonth = s_nMonth + 1
  284.     If s_iX > 12 Then s_iX = 1
  285.     s_TMPMonthToDay = s_MonthToDay
  286.     s_MonthToDay = s_MonthToDay + nJumlahHari(s_iX, Val(s_nDatas_D(2)))
  287.     
  288.     If s_MonthToDay >= ToDay Then
  289.         Month = Month + s_nMonth - 1 's_DayCek
  290.         MonthModDay = ToDay - s_TMPMonthToDay
  291. '        DateNext = Format(ToDay - s_TMPMonthToDay, "0#") & "/" & Format(s_iX, "0#")
  292.         Exit Do
  293.     End If
  294. Loop
  295. End Function
  296.  
  297. Function XXXYearModDay(DateNows As String, ToDay As Long, YearNow As Integer) As Long
  298. Dim s_nDatas_D() As String, s_DayCount As Long, s_DayCountTo As Long
  299. Dim s_YearToYearInDay As Long
  300.  
  301. GetString DateNows & "/", "/", s_nDatas_D()
  302.  
  303. ''If ToDay < MonthToDay(12, Val(s_nDatas_D(2))) Then Stop
  304.  
  305. s_DayCount = DayCount(DateNows, "31/12/" & s_nDatas_D(2)) + 1
  306. s_DayCount = ToDay - s_DayCount
  307.  
  308. YearNow = s_DayCount \ 365
  309. YearNow = YearNow + Val(s_nDatas_D(2))
  310.  
  311. Do
  312.     s_YearToYearInDay = YearToYearInDay(Val(s_nDatas_D(2)), YearNow)
  313.     YearModDay = s_DayCount - s_YearToYearInDay
  314.     If YearModDay < 0 Then YearNow = YearNow - 1 Else Exit Do
  315. Loop
  316. YearModDay = YearModDay + 1
  317. YearNow = YearNow + 1
  318. End Function
  319.  
  320. Function DateTimeSelisih(DateTimeBefores As String, DateTimeAfters As String) As String
  321. Dim s_nDatas_Bef() As String, s_nDatas_Aft() As String
  322. Dim s_Day As Long, s_Time As Long
  323.  
  324. GetString DateTimeBefores & " ", " ", s_nDatas_Bef()
  325. GetString DateTimeAfters & " ", " ", s_nDatas_Aft()
  326.  
  327. s_Day = DayCount(s_nDatas_Bef(0), s_nDatas_Aft(0))
  328. s_Time = FomatSecond(s_nDatas_Aft(1)) - FomatSecond(s_nDatas_Bef(1))
  329.  
  330. DateTimeSelisih = s_Day & " " & s_Time
  331. End Function
  332.  
  333. Function DateModDay(DateNows As String, ToDay As Long, Optional YearNow As Integer) As Long
  334. Dim s_nDatas_D() As String, s_DayCount As Long, s_DayCountTo As Long
  335. Dim a As Long, A2 As Integer, B As Long, D1 As Long, D2 As Long, F As Long
  336. Dim XXX As Integer
  337. 'DateNows = "31/12/2008"
  338. GetString DateNows & "/", "/", s_nDatas_D()
  339.  
  340. If Val(s_nDatas_D(2)) Mod 4 = 0 Then A2 = 366 Else A2 = 365
  341. GetString DateNows & "/", "/", s_nDatas_D()
  342. a = DayCount(DateNows, "31/12/" & s_nDatas_D(2)) + 1
  343. a = ToDay - a
  344.  
  345. 's = A - (A Mod 366)
  346.  
  347. 's = A - (365 - (A Mod 366))
  348. F = a \ 365
  349. 'k = A Mod 365
  350. F = F + Val(s_nDatas_D(2))
  351. Do
  352.     D1 = Val(s_nDatas_D(2)) + 0
  353.     'F = 3019
  354.     D2 = F '- r1
  355.     'D2 = 15
  356.     B = YearToYearInDay(D1, D2)
  357.     'B = B + ((D2 - D1) \ 4)
  358.     c = a - B
  359.     If c < 0 Then
  360.     '    MsgBox "Eroor"
  361.         F = F - 1
  362.     Else
  363.         Exit Do
  364.     End If
  365.     XXX = XXX + 1
  366. Loop
  367. DateModDay = c + 1
  368. 'MsgBox XXX
  369. YearNow = D2 + 1
  370. 'If YearNow Mod 4 <> 0 Then DateModDay = DateModDay + 1
  371. 'MsgBox YearToYearInDay(Val(s_nDatas_D(2)) + 1, (Val(s_nDatas_D(2)) + 1) + A)
  372. ''A = 2008 - 2011 '+ 1
  373. ''A = A \ 4
  374. ''A = YearToYearInDay(2010, 2012)
  375. ''Stop
  376. ''End
  377. End Function
  378.  
  379.  
  380. Function Asli_DateTimeToDateTime(DateTimeNows As String, ToTimeDate As String) As String
  381. '("1/10/2009", "1/10/2019")
  382.  
  383. 'Exit Function
  384. Dim iX As Integer, bbb As Integer, Ccc As Integer
  385.  
  386. Dim XXX As String
  387.  
  388. DateTimeNows = "29/2/2008 0:0:0" '"01/10/2009 0:0:0"
  389. XXX = "29/2/2012" '"29/12/2016"
  390.  
  391. 'DateTimeNows = _
  392. "25/7/2001 0:0:0"
  393. 'XXX = "29/7/2001"
  394.  
  395. Dim s_nDatas_DTNow() As String, s_nDatas_D() As String, s_nDatas_T() As String
  396. Dim s_CountDays As Integer, s_OutPutProses As Long, s_YearNow As Integer
  397.  
  398. GetString DateTimeNows & " ", " ", s_nDatas_DTNow()
  399. GetString s_nDatas_DTNow(0) & "/", "/", s_nDatas_D()
  400. GetString s_nDatas_DTNow(1) & ".", ".", s_nDatas_T()
  401.  
  402. MsgBox DateTo(s_nDatas_DTNow(0), DayCount(s_nDatas_DTNow(0), XXX)) & " test"
  403. 'MsgBox (DayCount("29/2/2008", "1/3/2008"))
  404. 'Exit Function
  405.  
  406. s_OutPutProses = Val(s_nDatas_D(2))
  407. s_CountDays = DateModDay(s_nDatas_DTNow(0), DayCount(s_nDatas_DTNow(0), XXX), s_YearNow)
  408. 's_CountDays = s_CountDays - 1
  409. s_OutPutProses = MonthModDay(s_CountDays, s_nDatas_D(0) & "/" & s_nDatas_D(1) & "/" & s_nDatas_D(2), DateTimeToDateTime)
  410.  
  411. DateTimeToDateTime = DateTimeToDateTime & "/" & s_YearNow 's_nDatas_D(0) & "/" & s_nDatas_D(1) & "/" & s_nDatas_D(2)
  412. End Function
  413.  
  414. Function DateTimeToDay(DateTimeNows As String, Days As String)
  415. Dim s_nDatas_DTNow() As String, s_nDatas() As String
  416.  
  417. GetString DateTimeBefores & " ", " ", s_nDatas_Bef()
  418.  
  419. End Function
  420.  
  421. Function DateTimeNext(DateTimeNows As String, TimeDateAfters As String)
  422. Dim s_nDatas_DTNow() As String, s_nDatas() As String
  423.  
  424. GetString DateTimeBefores & " ", " ", s_nDatas_Bef()
  425.  
  426. End Function
  427.  
  428. Function YearCount(DateBefores As String, DateAfters As String) As Long
  429.     
  430. End Function
  431.  
  432. Function MonthCount(DateBefores As String, DateAfters As String) As Long
  433. Dim s_iX As Integer, s_MonthToDay As Integer, s_TMPMonthToDay As Integer
  434. Dim s_nDatas_D1() As String, s_nDatas_D2() As String, s_YearNow As Integer, s_DayCek As Integer
  435. 'Dim s_nMonth As Integer,
  436.  
  437. GetString DateBefores & "/", "/", s_nDatas_D1()
  438. GetString DateAfters & "/", "/", s_nDatas_D2()
  439.  
  440. MonthCount = DayCount(DateBefores, DateAfters)  '& " " & nJumlahHari(2, 2009)
  441.  
  442. Form1.Caption = MonthCount
  443.  
  444. s_Year = Val(s_nDatas_D2(2)) - Val(s_nDatas_D1(2))
  445. s_nMonth = 12 * s_Year + Val(s_nDatas_D2(1))
  446. MonthCount = s_nMonth - Val(s_nDatas_D1(1))
  447. 'If MonthCount < 12 Then MonthCount = MonthCount + 1
  448. End Function
  449.  
  450. Function YearCountBy_Day(DateBefores As String, ToDay As Long) As Long
  451. Dim s_nDatas_D() As String
  452.  
  453. GetString DateNows & "/", "/", s_nDatas_D()
  454.  
  455. End Function
  456.  
  457. Function MonthCountBy_Day(DateBefores As String, ToDay As Long) As Long
  458. Dim s_nDatas_D() As String, s_YearNow As Integer
  459. Dim s_DayCount As Long
  460.  
  461. 'ToDay = 427
  462. 'DateBefores = "30/5/2008"
  463.  
  464.  
  465.  
  466.  
  467. GetString DateBefores & "/", "/", s_nDatas_D()
  468.  
  469. s_DayCount = DayCount(DateBefores, "31/12/" & s_nDatas_D(2))
  470. MonthCountBy_Day = AddDayOnYear(DateBefores, ToDay, s_YearNow)
  471. MsgBox ToDay - MonthCountBy_Day
  472. Stop
  473. End Function
  474.  
  475. Function xxxxMonthCount(DateBefores As String, DateAfters As String) As Long
  476. Dim s_iX As Integer, s_MonthToDay As Integer, s_TMPMonthToDay As Integer
  477. Dim s_nDatas_D1() As String, s_nDatas_D2() As String, s_YearNow As Integer, s_DayCek As Integer
  478. Dim s_nMonth As Integer
  479.  
  480. GetString DateBefores & "/", "/", s_nDatas_D1()
  481. GetString DateAfters & "/", "/", s_nDatas_D2()
  482.  
  483. s_Year = Val(s_nDatas_D2(2)) - Val(s_nDatas_D1(2))
  484. s_nMonth = 12 * s_Year + Val(s_nDatas_D2(1))
  485. MonthCount = s_nMonth - Val(s_nDatas_D1(1))
  486. 'If MonthCount < 12 Then MonthCount = MonthCount + 1
  487. End Function
  488.  
  489. Function DayCount(DateBefores As String, DateAfters As String) As Long
  490. Dim nDatasBefore() As String, nDatasAfter() As String
  491. Dim Years As Integer
  492. Dim Day1 As Long, Day2 As Long, Day3 As Long
  493. Dim Year1 As Integer, Year2 As Integer
  494.  
  495. If DateBefores = "" Or DateAfters = "" Then
  496. DayCount = -100
  497. Exit Function
  498. End If
  499.  
  500. GetString DateBefores & "/", "/", nDatasBefore()
  501. GetString DateAfters & "/", "/", nDatasAfter()
  502.  
  503. Years = Val(nDatasAfter(2)) - Val(nDatasBefore(2))
  504. If Years = 0 Then
  505.     Years = Val(nDatasBefore(2))
  506.     
  507.     Day1 = MonthToDay(Val(nDatasBefore(1)) - 1, Val(nDatasBefore(2))) + _
  508.     Val(nDatasBefore(0))
  509.  
  510.     Day2 = MonthToDay(Val(nDatasAfter(1)) - 1, Val(nDatasAfter(2))) + _
  511.     Val(nDatasAfter(0))
  512.     
  513.     DayCount = Day2 - Day1
  514. Else
  515.     Year1 = Val(nDatasBefore(2) + 1)
  516.     Year2 = Val(nDatasAfter(2) - 1)
  517.     
  518.     If (Year2 - Year1) + 1 >= 1 Then Day1 = YearToYearInDay(Year1 - 1, Year2)
  519.     
  520.     Day2 = MonthToDay(Val(nDatasBefore(1)) - 1, Val(nDatasBefore(2))) + _
  521.     Val(nDatasBefore(0))
  522.     Day2 = MonthToDay(12, Val(nDatasBefore(2))) - Day2
  523.     Day1 = Day1 + Day2
  524.     
  525.     Day2 = MonthToDay(Val(nDatasAfter(1)) - 1, Val(nDatasAfter(2))) + _
  526.     Val(nDatasAfter(0))
  527.     DayCount = Day1 + Day2 ' + 1
  528. End If
  529. End Function
  530.  
  531.