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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 456 fois - Téléchargée 26 fois

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

Ajouter un commentaire

Commentaires

draluorg
Messages postés
627
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010
-
Ok merci les gars, donc l'utilisation de FileTimeToLocalFileTime est obsolete dans ce cas si...

Quelqu'un sait dans quel cas il doit etre utilise ou non ?

++
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
je ne doutais pas qu'il ai eu raison (Winrar n'affiche pas les secondes)...
sacrées parenthèses^^
cs_EBArtSoft
Messages postés
4531
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
5 -
Ren> Draluorg a raison ! je suis passé par la pour utiliser ta fonction dans un de mes prog et effectivement il y a une erreur !

Il faut lire : nSecond = (vnTime Mod &H20&) * 2

voili-voilou c'est corrigé ;)

@+
draluorg
Messages postés
627
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010
-
re,

Ok merci, je vais enlever le FileTimeToLocalFileTime et tanpis pour les quelques secondes de difference...

Merci pour ta reponse :)

++
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
sûr de mon code uniquement en ce qu'il me donne le même résultat que Winrar, avec les dates/heures de mes fichiers, dans une archive CAB...
et que j'ai suivi la description de la date, trouvée sur un newsgroup.

ce qui "cloche" ? je n'en sais rien... un décalage dans les heures fourni par le FileTimeToLocalFileTime... mais pour les secondes, je n'en sais rien sans y passer davantage de temps, en tous cas.

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.