Const DTS_START_YEAR = 1970
Const DTS_START_MNTH = 1
Const DTS_START_DAY = 1
Const DTS_STRAT_RBY = 2
'===============================\
' RENVOI LE MARQUAGE ACTUEL \
'=================================\
Public Function NowStamp() As Long
NowStamp = DateToStamp(Now)
End Function
'===============================\
' CONVERTI UN MARQUAGE EN DATE \
'=================================\
Public Function StampToDate(ByVal Value As Long) As String
Dim dys As Integer
Dim scs As Integer
Dim mns As Integer
Dim hrs As Integer
Dim d As Integer
Dim m As Integer
Dim b As Integer
Dim n As Integer
Dim Y As Integer
Dim mxd() As Byte
'--------------------------
ReDim mxd(1 To 12)
'--------------------------
mxd(1) = 31
mxd(2) = 28
mxd(3) = 31
mxd(4) = 30
mxd(5) = 31
mxd(6) = 30
mxd(7) = 31
mxd(8) = 31
mxd(9) = 30
mxd(10) = 31
mxd(11) = 30
mxd(12) = 31
'--------------------------
scs = (Value Mod 60)
mns = (Value \ 60) Mod 60
hrs = (Value \ 3600) Mod 24
dys = (Value \ 86400)
'--------------------------
b = DTS_STRAT_RBY
d = DTS_START_DAY
m = DTS_START_MNTH
Y = DTS_START_YEAR
While dys > 0
d = d + 1
n = mxd(m)
dys = dys - 1
If (b = 0) And (m = 2) Then n = (n + 1)
If (d > n) Then
d = 1
m = m + 1
If (m > 12) Then
m = 1
b = b - 1
Y = Y + 1
If (b < 0) Then b = 3
End If
End If
Wend
'--------------------------
StampToDate = DateSerial(Y, m, d) & " " & TimeSerial(hrs, mns, scs)
'--------------------------
End Function
'================================\
' CONVERTI UNE DATE EN MARQUAGE \
'==================================\
Public Function DateToStamp(ByVal Value As Date) As Long
Dim scs As Integer
Dim mns As Integer
Dim hrs As Integer
Dim dow As Integer
Dim yrs As Integer
Dim mth As Integer
Dim dys As Integer
Dim d As Integer
Dim m As Integer
Dim b As Integer
Dim n As Integer
Dim Y As Integer
Dim mxd() As Byte
'--------------------------
ReDim mxd(1 To 12)
'--------------------------
mxd(1) = 31
mxd(2) = 28
mxd(3) = 31
mxd(4) = 30
mxd(5) = 31
mxd(6) = 30
mxd(7) = 31
mxd(8) = 31
mxd(9) = 30
mxd(10) = 31
mxd(11) = 30
mxd(12) = 31
'--------------------------
scs = Second(Value)
mns = Minute(Value)
hrs = Hour(Value)
dow = Day(Value)
mth = Month(Value)
yrs = Year(Value)
If yrs <= 1969 Then Err.Raise 380
If yrs >= 2040 Then Err.Raise 380
'--------------------------
b = DTS_STRAT_RBY
d = DTS_START_DAY
m = DTS_START_MNTH
Y = DTS_START_YEAR
Do
If (Y = yrs) And (m = mth) And (d = dow) Then Exit Do
d = d + 1
n = mxd(m)
dys = dys + 1
If (b = 0) And (m = 2) Then n = (n + 1)
If (d > n) Then
d = 1
m = m + 1
If (m > 12) Then
m = 1
b = b - 1
Y = Y + 1
If (b < 0) Then b = 3
End If
End If
Loop
'--------------------------
DateToStamp = scs + (mns * 60&) + (hrs * 3600&) + (dys * 86400)
'--------------------------
End Function