Ich möchte Unix-Millisekunden-Konverter in ein menschenlesbares Datumsformat implementieren. mit diesem Beitrag https://stackoverflow.com/a/1657307/1979882 Ich habe gefunden, dass ich solche Zeichenfolge empfangen kann, aber ich kann keine Zeitzone innerhalb des Codes einrichten. Der Code verwendet nur die Systemzeitzone.Datumsformatierung in reinem C mit Zeitzonen
#include <stdio.h>
#include <time.h>
int main (int argc, char *argv[])
{
time_t now;
struct tm *lcltime;
now = time (NULL);
lcltime = localtime (&now);
printf ("The time is %d:%d\n", lcltime->tm_hour, lcltime->tm_min);
return 0;
}
Ist es möglich, es anzupassen?
EDIT
Ich brauche eine Java-ähnliche Methode:
SimpleDateFormat df= new SimpleDateFormat("dd MMM hh:mm z",Locale.ENGLISH);
df.setTimeZone("Europe/London");
System.out.println("London Time " + df.format(System.currentTime()));
df.setTimeZone("Asia/Benjin");
System.out.println("Benjin Time " + df.format(System.currentTime()));
EDIT_2
Ich fand ich Rüstzeit Zone setenv verwenden, können (...) url https://stackoverflow.com/a/1620451/1979882
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (int argc, char *argv[])
{
struct tm *mt;
time_t mtt;
char ftime[10];
setenv("TZ", "PST8PDT", 1);
tzset();
mtt = time(NULL);
mt = localtime(&mtt);
strftime(ftime,sizeof(ftime),"%Z %H%M",mt);
printf("%s\n", ftime);
}
Aber ändert sich die Systemzeitzone. Ich brauche nur Zeitzonenmodifikation nur in meinem Code.
Bezug Können Sie das konkretisieren, was Sie tun wollen? 'localtime' gibt eine Uhrzeit in der lokalen Zeitzone als System zurück. – fluter
Ich bin etwas überrascht ['strftime'] (http://en.cppreference.com/w/c/chrono/strftime) passt nicht die Rechnung für das, was Sie versuchen zu tun, da es verwendet werden kann für format time und dates aussehen wie verdammt nah alles was man logisch (und unlogisch) denken kann. – WhozCraig
Schauen Sie einfach über * Programm zum Drucken der aktuellen formatierten Greenwich Mean Time * auf der Seite, auf die Sie verweisen. Es sollte erklären, dass die Umgebung für eine lokale Zeit festgelegt wird, die sich von der für Ihr System bereits definierten unterscheidet. Rufen Sie an, 'localtime' ruft" tzset "an und berechnet einen Zeitwert basierend auf Ihrer aktuellen Systemkonfiguration. Wenn Sie den Offset von UTC überprüfen möchten, rufen Sie stattdessen 'gmtime' auf. –