P
Paper
Achso ich hatte das so gelassen weil man in einem Timestamp ja eh kein % oder sonstiges findet.Die Verwendung von printf in dieser Form ist sowieso gefährlich (was wenn ein % im String ist?).
Ich habe das jetzt mal so gemacht. Ich habe keine Ahnung was da genau rein muss, ich habe es so versucht aber das war wohl ein Fehler.
C:
const char* Unix2Date(int unixzeit,int modusTime)
{
static char str1[50];
//Variabeln für die einzelnen Datumsteile
int ijahr=0,imonat=0,itag=0,istd=0,imin=0,isek=0;
char timezone[30];
char stringVar[20];
int sommerZeit=0;
//Endwert der UnixZeit 19.01.2038 um 4:14:07
int unixMax = 2147483647;
//Überprüfung,ob die eingegebene Unixzeit gültig ist
if (unixzeit>>unixMax)
{
errorSend();
}
//time_t ist ein Zeitstempel ... in Sek ab 1970
//wie UnixZeit
time_t unixStamp = unixzeit;
//Struktur für time_t
struct tm * unixConvert;
//String zum Speichern des Datums
char cbuffer[80];
//Struktur bekommt den Zeitstempel
if(modusTime==2)
unixConvert = localtime(&unixStamp);
else if (modusTime==1)
unixConvert = gmtime(&unixStamp);
//Speichern der einzelnen Datumsteile in Variabeln
strftime( stringVar, 20, "%d", unixConvert ); //Tag
itag = atoi(stringVar);
strftime( stringVar, 20, "%m", unixConvert ); //Monat
imonat = atoi(stringVar);
strftime( stringVar, 20, "%Y", unixConvert ); //Jahr
ijahr = atoi(stringVar);
strftime( stringVar, 20, "%H", unixConvert ); //Stunde
istd = atoi(stringVar);
strftime( stringVar, 20, "%M", unixConvert ); //Minute
imin = atoi(stringVar);
strftime( stringVar, 20, "%S", unixConvert ); //Sekunde
isek = atoi(stringVar);
//Zeitzone
strftime( timezone, 30, "%z", unixConvert );
//Ausgabestring
char str1[50];
//Zwischenspeicher
char buffer[20];
//Umwandlung und Zusammenfassung in einen Return-String
strcpy (str1,itoa(itag,buffer,10));
strcat (str1,".");
strcat (str1,itoa(imonat,buffer,10));
strcat (str1,".");
strcat (str1,itoa(ijahr,buffer,10));
strcat (str1," um ");
strcat (str1,itoa((istd),buffer,10));
strcat (str1,":");
strcat (str1,itoa(imin,buffer,10));
strcat (str1,":");
strcat (str1,itoa(isek,buffer,10));
if (modusTime==2)
{
strcat (str1," ");
strcat (str1,timezone);
}
else
{
strcat (str1," ");
strcat (str1,"UTC/GMT");
}
puts(str1);
return str1;
}
Den Code den ich schon hatte, für diesen Teil
C:
int Unix2Date(int unixzeit,int modusTime)
....
....
....
return str1;