Bonjour,

J'ai un problème de format de sortie d'une date heure qui contient maintenant des nano - secondes au lieu des millisecondes.

Pour une date normale avec des millisecondes contenues dans un format string, j'utilisait le format int64_t avec la fonction de conversion _atoi64().

Exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
/*...*/
 
string S_DateHeure{};
int64  I64_DateHeure{};
 
/*Initialisation d'une date heure en milliseconde*/
S_Date_Heure = "20220907121659001";
 
/*Conversion en format int64_t de la date heure en format string*/
I64_Date_Heure = _atoi64(S_Date_Heure.c_str());
Maintenant la date heure contient des nano secondes ce qui fait plus de 17 chiffres (20 chiffres).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
string S_DateHeure{};
int64  I64_DateHeure{};
 
/*Initialisation d'une date heure avec des nano-seconde*/
S_Date_Heure = "20220907125250000005";
 
/*Conversion en format int64_t de la date heure en format string*/
I64_Date_Heure = _atoi64(S_Date_Heure.c_str());
 
/*
  J'obtiens un chiffre : 9223372036854775807 au lieu 20220907125250000005
*/
Après des recherches, on me dit d'utiliser le format int128_t.
Sauf que mon compilateur C++ ne contient pas cette librairie et donc ne reconnait pas les int128_t même en le mettant à jour !

- Existe t il un format plus long que le int64_t ?
- Si oui pouvez vous me donner sa fonction de convertion d'un format string en ce format ?

Merci !!