PureBasic

Forums PureBasic
Nous sommes le Mar 21/Mai/2013 19:35

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 9 messages ] 
Auteur Message
 Sujet du message: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 11:27 
Hors ligne

Inscription: Ven 02/Mar/2012 10:36
Messages: 2
Bonjour à tous

Débutant en PureBasic, mais pas en Basic (utilisateur du GFA sur Amiga, il y bien longtemps.....)
Je me casse les dents sur une histoire de conversion de TimeStamp, j'ai essayé la commande "date"
mais je n'arrive à rien.
En gros j'ai un fichier binaire provenant d'une station météo WS3600 et je dois y faire le ménage,
doublon de mesure à retirer, je lis sans problème les données, température, pression etc ..... mais
la date :( .
Je cherche donc à faire la conversion de 40909.001539351855 (timestamp Microsoft) --> 01/01/2012 00:02:13
et aussi l'inverse, la commande "Date" part du TimeStamp Unix et mon fichier utilise le timeStamp Microsoft (quelle idée ...).

Voila s'il y a des spécialistes du conversion de temps ...... je m'en remet à vous ....

Thierry


Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 11:58 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12948
je ne connais pas Timestamp ....

mais en Purebasic la fonction

Code:
debug FormatDate("A=%yyyy, M= %mm, J=%dd", date())

permet de retourner une date au format en fonction du nombre de secondes écoulées depuis le '01/01/1970 0:00:00').
Code:
;40909.001539351855 (timestamp Microsoft) --> 01/01/2012 00:02:13
Annee=1970
Mois=01
Jour=01
Heure=0
Minute=1
Seconde=0

e= Date(Annee, Mois, Jour, Heure, Minute, Seconde)
debug  "nombre de secondes depuis la date spécifiée   (01/01/ 1970 + 1 minute)   "+str(e)

; ******************************************************************************

e= Date()
debug  "nombre de secondes depuis la 01/01/1970:00:00:00      "+str(e)

debug "date du jour   :"+ FormatDate("Anné=%yyyy, Mois= %mm, Jours=%dd", e)




a partir de là , faut faire un convertisseur de valeur partant du "TimeStamp" :)

il existe apparemment un convertisseur en ligne ici :
http://www.timestamp.fr/

[reedit]

je lis :
Citation:
Le timestamp (unix) désigne le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC précise


ça tombe bien la fonction Date() de purebasic aussi ;)

ce qui gene dans ton histoire c'est le chiffre a virgule ! car il semble que TimeStamp est un entier normalement

bon , ceci est un récapitulatif des fonctions Purebasic :)

_________________
Image


Dernière édition par Dobro le Ven 02/Mar/2012 12:23, édité 2 fois.

Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 12:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 3063
Localisation: Arras, France
Méthode empirique :
Code:
MyDate.d = 40909.001539351855

MyUnixDate.d = MyDate * 32398.15403
Debug FormatDate("%yyyy/%mm/%dd", MyUnixDate)
Debug FormatDate("%hh:%ii:%ss", MyUnixDate)

_________________
The shooting crew ~> http://www.shootingcrew.com
Bobble Puzzle ~> http://djes.free.fr


Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 12:28 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
Moi j'ai un décalage de 133 secondes !
Code:
;En appliquant ça http://able2know.org/topic/70939-1
MS = 40909.001539351855
Unix.q = MS * 86400 - 2209161600
Debug Unix
Debug Date(2012, 01, 01, 0, 2, 13)

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 12:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 19/Juil/2004 22:31
Messages: 1103
Code:
ProcedureDLL UnixToMSDosDate(UnixDate) ; Convert MsDos date to Unix date
 
  Protected Result, m
 
  m      = Year(UnixDate) - 1980
  Result | (m << 25)
  m      = Month(UnixDate)
  Result | (m << 21)
  m      = Day(UnixDate)
  Result | (m << 16)
  m      = Hour(UnixDate)
  Result | (m << 11)
  m      = Minute(UnixDate)
  Result | (m << 5)
  m      = Second(UnixDate) / 2
  Result | m
 
  ProcedureReturn Result
EndProcedure


Code:
ProcedureDLL MSDosDateToUnix(MSDos_Date) ; Convert Unix date to MsDos date
 
  Protected Result, y, m, d, H, Min, s
 
  y      = 1980 + (MSDos_Date >> 25) & $7F
  m      = (MSDos_Date >> 21) & $0F
  d      = (MSDos_Date >> 16) & $1F
  H      = (MSDos_Date >> 11) & $1F
  Min    = (MSDos_Date >> 5) & $3F
  s      = (MSDos_Date & $1F) * 2
  Result = Date(y, m, d, H, Min, s)
 
  ProcedureReturn Result
EndProcedure

_________________
DroopyLib & PBFastLib


Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 12:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 19/Juil/2004 22:31
Messages: 1103
pourrait servir aussi :

Description : Get the time of a File
The 'which' parameter specifies which time you want to retrieve
0 = Time the File was created
1 = Time the file was last accessed
2 = Time the file was last written
Return 0 if it fails / Date in Purebasic format if successful


Code:
ProcedureDLL FileGetTime(File.s,Which); Get the time of a File
 
 
  Result=0
  Handle=CreateFile_(@File,#GENERIC_READ,#FILE_SHARE_READ|#FILE_SHARE_WRITE,0,#OPEN_EXISTING,#FILE_ATTRIBUTE_NORMAL,0)
  If Handle<>#INVALID_HANDLE_VALUE
    Select Which
      Case 1
        GetFileTime_(Handle,0,FT.FILETIME,0)
      Case 2
        GetFileTime_(Handle,0,0,FT.FILETIME)
      Default
        GetFileTime_(Handle,FT.FILETIME,0,0)
    EndSelect
   
    Result=FileTimeToDate(FT)
    CloseHandle_(Handle)
  EndIf
  ProcedureReturn Result
EndProcedure

_________________
DroopyLib & PBFastLib


Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 12:36 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
en fait j'ai oublié de mettre un flottant pour MS , mon calcul fonctionne

Code:
;En appliquant ça http://able2know.org/topic/70939-1
MS.d = 40909.001539351855
Unix.q = MS * 86400 - 2209161600
Debug Unix
Debug Date(2012, 01, 01, 0, 2, 13) 

Debug FormatDate("%yyyy/%mm/%dd", Unix)
Debug FormatDate("%hh:%ii:%ss", Unix)

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 12:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12948
@comtois
j'avais vu ton calcul ici : ( arf tu l'avais spécifié dans le code )
http://able2know.org/topic/70939-1
:)

ou ils expliquent que

Citation:
The number of seconds in 25569 days is:
25569*24*60*60
= 2209161600


et que

Citation:

The number of seconds in 1 day is:
24*60*60
= 86400


et que donc :

Citation:
Code:HumanDate: Format(([unixdate]+2209161600)/86400,"dd/mm/yy hh:nn:ss")



avec tout ça notre ami gold94 a toutes les explications :D ( bravo a tous )

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Conversion TimeStamp Microsoft
MessagePosté: Ven 02/Mar/2012 15:02 
Hors ligne

Inscription: Ven 02/Mar/2012 10:36
Messages: 2
Vous êtes tous génial, un grand merci je vais pouvoir reprendre le fil de
mon programme, et faire le nettoyage dans mes fichiers météo pour les stats
2011, car suite à une modif du hardware de la station, celle-ci m'envoie 4 à 5
mesures par minute à la place d'une, résultat un fichier énorme et long très long a calculé ,
pour voir à quoi ressemble un graphe météo :
http://gold93.hd.free.fr/lameteo/index.html

Merci encore

Thierry


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 9 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye