Dostimetodate (convertion date et time de dos vers un type date)

Contenu du snippet

je 'joue' actuellement avec des fichiers dans lesquels sont stockés des date et des heures, au format DOS.

La date est sur deux octets. Le nombre d'année depuis 1980 est stocké dans les bits 9-15.
Le mois est stocké dans les bits 5-8
Le jour est dans les bits 0-4.

L'heure est sur deux octets également.
Les bits 11-15 contiennent l'heure.
Les Bits 5-10, les minutes
Et 0-4 pour les secondes. Comme il n'y a pas assez de bit pour les secondes, celle-ci sont divisées par deux...

Source / Exemple :


Public Function DosTimeToDate(ByVal vnDate As Long, ByVal vnTime As Long) As Date
Dim nYear As Integer
Dim nMonth As Integer
Dim nDay As Integer
Dim nHour As Integer
Dim nMinute As Integer
Dim nSecond As Integer
    vnDate = vnDate And &HFFFF&
    nYear = 1980 + vnDate \ &H200&
    nMonth = (vnDate \ &H20&) Mod &H10&
    nDay = vnDate Mod &H20&

    vnTime = vnTime And &HFFFF&
    nHour = vnTime \ &H800&
    nMinute = (vnTime \ &H20&) Mod &H40&
    nSecond = 2 * (vnTime Mod &H20&)
    DosTimeToDate = DateSerial(nYear, nMonth, nDay) & " " & TimeSerial(nHour, nMinute, nSecond)
End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.