Comment convertit une date/time

Bonjour à tous,

J'utilise un GPS et ce code me retourne les positios et date

gps.getPar(lon,lat,alt,time,vel);

La variable time me retourne ceci : 20130609062400.097

Comment puis-je convertir ceci de maniere à etre comrpis par l'oeil humain, du genre

16-06-2013 10:10:00

Merciiii

bonjour,
quel modèle de gps?
sans le code complet, c'est difficile de répondre.

Heu c'est un SIM908 qui comprend un GSM/GPS

 gps.getPar(lon,lat,alt,time,vel);
Serial.print(time) // => 20130609062400.097

infobarquee:
sans le code complet, c'est difficile de répondre.

Ben je ne sais pas trop quoi donner en plus

#include "gps.h"
GPSGSM gps;

 #ifdef DEBUG
          Serial.println(F(""));
          Serial.println(F("Sending GPS coords to the remote server"));
          Serial.println(F("---------------------------------------"));
          stat=gps.getStat();
          if(stat==1)
             Serial.println(F("NOT FIXED"));
          else if(stat==0)
             Serial.println(F("GPS OFF"));
          else if(stat==2)
             Serial.println(F("2D FIXED"));
          else if(stat==3)
	     Serial.println(F("3D FIXED"));
        #endif
        
      delay(5000);
      //Get data from GPS
      gps.getPar(lon,lat,alt,time,vel);
      
      strcpy (coords,"lat=");
      strcat (coords,lat);
      
      strcat (coords,"&long=");
      strcat (coords,lon);
      
      strcat (coords,"&alt=");
      strcat (coords,alt);
      
      strcat (coords,"&vel=");
      strcat (coords,vel);
      
      strcat (coords,"&time=");
      strcat (coords,time);
      
      
      #ifdef DEBUG
        Serial.print(F("Coords to be sent : "));                               
        Serial.println(coords);
      #endif
      
      inet.httpPOST(host, port_post, path_post, coords , "Result", 1000);
      delay(10000);

J'aimerais modifier mon code ci-dessous pour que time ne soit plus un chiffre a 20 caracter, mais un format date et time comme fais la fonction.

Ca doit etre un format timeStamp et je ne sais pas convertir ca...

pierrot10:
Ben je ne sais pas trop quoi donner en plus

J'aimerais modifier mon code ci-dessous pour que time ne soit plus un chiffre a 20 caracter, mais un format date et time comme fais la fonction.

Ca doit etre un format timeStamp et je ne sais pas convertir ca...

bonjour
c'est quelle librarie ? trouvée où ?

regarde pour exemple la lib Tinygps et sa methode Date/time cracking
http://arduiniana.org/libraries/tinygps/

Tu peux découper une chaîne de caractères avec Substring

Puis ré-assembler les morceaux de façon lisible et intercalant des "-" ou ":"

Je n'arrive toujours pas lire ce formatz et le comvertir

Le Time est tiré de cette fonction

gps.getPar(lon,lat,alt,time,vel);
char GPSGSM::getPar(char *str_long, char *str_lat, char *str_alt, char *str_time, char *str_speed) 
{
	char ret_val=0;
	char *p_char; 
	char *p_char1;
	gsm.SimpleWriteln("AT+CGPSINF=0");
	gsm.WaitResp(5000, 100, "OK");
	if(gsm.IsStringReceived("OK"))
		ret_val=1;
		
	//longitude
	p_char = strchr((char *)(gsm.comm_buf),',');
	p_char1 = p_char+1;  //we are on the first char of longitude
	p_char = strchr((char *)(p_char1), ',');
	if (p_char != NULL) {
          *p_char = 0; 
    }
	strcpy(str_long, (char *)(p_char1));
	
	// latitude
	p_char++;
	p_char1 = strchr((char *)(p_char), ',');
	if (p_char1 != NULL) {
          *p_char1 = 0; 
    }	
	strcpy(str_lat, (char *)(p_char));
	
	// altitude
	p_char1++;
	p_char = strchr((char *)(p_char1), ',');
	if (p_char != NULL) {
          *p_char = 0; 
    }	
	strcpy(str_alt, (char *)(p_char1));
	
	// UTC time
	p_char++;
	p_char1 = strchr((char *)(p_char), ',');
	if (p_char1 != NULL) {
          *p_char1 = 0; 
    }	
	strcpy(str_time, (char *)(p_char));	

	// TTFF
	p_char1++;
	p_char = strchr((char *)(p_char1), ',');
	if (p_char != NULL) {
          *p_char = 0; 
    }	

	// num
	p_char++;
	p_char1 = strchr((char *)(p_char), ',');
	if (p_char1 != NULL) {
          *p_char1 = 0; 
    }	

	// speed
	p_char1++;
	p_char = strchr((char *)(p_char1), ',');
	if (p_char != NULL) {
          *p_char = 0; 
    }		
	strcpy(str_speed, (char *)(p_char1));	
	
	return ret_val;
}

Mais en fait, je suis bête, la date est inscrite dans ce chiffre

20130609062400.097

La question est comment ajouter des - afin formater cette chaine de caratere de la sorte 2013-06-09 062400.097

Par contre je n'ai aucune idée sur ce c'est que le : 062400.097. J'imagine bien que ca doit être l'heure, mais.... avez vous une diée?

MERCI

Peut être 6h 24min 0s 97ms ?
Sinon lire la datasheet

Ben oui, c'est ce que j'avais pensé, mais 6h du mat, c'est comme tot pour bosser. Mais si l'heure est en UTC, c'est rare qu' 8h je bosse etc....
Mais c'est peut etre bien, ca je ne me souviens plus quand j'ai lancé ce code

pierrot10:
Par contre je n'ai aucune idée sur ce c'est que le : 062400.097. J'imagine bien que ca doit être l'heure, mais.... avez vous une diée?

bonsoir
c'est l'heure en UTC
la partie decimale est l'age de la trame qui suit :grin:
je fais simple et court
au creneau montant (start) de la trame qui debute , "au tout debut du BIP, il etait exactement HHMMSS.mil" (plagiat volontaire pour ceux qui ont connu l'horloge parlante :grin:

la theorie GPS NMEA et derivé veut qu'au moins une trame "datum" soit emise par seconde en fix, mais pour que les équipements recepteurs puissent avoir une precision d'association temporelle importante, il faut aussi tenir compte de la chaine de transmission reception et de sa faible precision intrinseque.

dans les gps dediés servant d'asservissement à des bases de temps, le temps de montée du creneau "start" est une des caractéristiques les plus importantes.

dans le monde "arduino petit log" cette valeur peut etre ignorée ou simplement prise en compte "anecdotiquement"