Page 1 sur 1

[Func] _GetTimestamp_Date_Time

Posté : ven. 06 janv. 2012 00:36
par Tlem
Bonjour, vous trouverez ci-dessous une fonction de récupération de la date et de l'heure de manière "sécurisée", afin par exemple d'horodater des fichiers sans risque de décalage dans le temps.

Dans ce sujet, jchd nous explique que l'utilisation des macros @MIN et @SEC pour horodater un fichier peut créer un horodatage incohérent ou complètement décalé dans le temps (voir ce message) ...
Puis il explique :
jchd a écrit :Donc si on est à la seconde 59 et 999ms, on peut capter @SEC = 59 puis au moment où l'interpréteur parvient à @MIN, récupérer la minute suivante.
Afin d'éviter ce genre de désagrément, voici une fonction qui permet de contourner le problème.

Code : Tout sélectionner

; #FUNCTION# ====================================================================================================================
; Name...........: _GetTimestamp_Date_Time
; Description ...: Returns the current Date and time without a possible gap.
; Syntax.........: _GetTimestamp_Date_Time($sType)
; Parameters ....: $sType - one the following:
;                  |1 - Return the date and time in string format YYYY.MM.DD HH:MM:SS
;                  |2 - Return the date and time - Array with the following format:
;                                                                                   |[0] - Month
;                                                                                   |[1] - Day
;                                                                                   |[2] - Year
;                                                                                   |[3] - Hour
;                                                                                   |[4] - Minute
;                                                                                   |[5] - Second
; Return values .: Success - Returns the current date and time in string format or array format.
; Author ........: Tlem
; Modified.......:
; Remarks .......: Other functions can give a gap time due to this possibility:
;                  @SEC=59 and @MSEC=999 when capturing @MIN and then capturing @SEC (that can be 0 !!!).
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _GetTimestamp_Date_Time($sType = 1)
    If $sType < 1 Or $sType > 2 Then $sType = 1
    Local $iYear = @YEAR
    Local $iMon = @MON
    Local $iMday = @MDAY
    Local $iHour = @HOUR
    Local $iMin = @MIN
    Local $iSec = @SEC

    If ($iMin <> @MIN) Then
        $iYear = @YEAR
        $iMon = @MON
        $iMday = @MDAY
        $iHour = @HOUR
        $iMin = @MIN
        $iSec = @SEC
    EndIf

    If $sType = 1 Then
        Return $iYear & "/" & $iMon & "/" & $iMday & " " & $iHour & ":" & $iMin & ":" & $iSec
    Else
        Local $aDateTime[6] = [$iMon, $iMday, $iYear, $iHour, $iMin, $iSec]
        Return $aDateTime
    EndIf
EndFunc   ;==>_GetTimestamp_Date_Time
Merci à tous.

Re: [Func] _GetTimestamp_Date_Time

Posté : ven. 06 janv. 2012 08:13
par DimVar
Parfait, je garde ça au chaud.
Merci.