Wie benutze ich strftime in C, wie kann ich die Zeit genau wie einen Unix-Zeitstempel formatieren?

7

Hier ist die Art der Zeitformatierung, nach der ich suche:

%Vor%

Ich benutze das momentan:

%Vor%

Was gibt:

%Vor%

Was nah ist, aber nicht genau. Ich kann am Ende nichts finden, wenn -0500 angezeigt wird. Außerdem bekomme ich die Sekunden als Int.

Wie kann ich diese beiden Probleme lösen?

    
Vlad the Impala 11.10.2009, 19:57
quelle

3 Antworten

21

Ich kam auf folgendes:

%Vor%

Korrekturen für die Probleme, die Sie hatten:

  • Verwenden Sie gettimeofday() und struct timeval , das für die höhere Genauigkeit ein Mikrosekunden-Element hat.
  • Verwenden Sie einen zweistufigen Ansatz, bei dem wir zuerst eine Zeichenfolge erstellen, die alle Daten außer den Mikrosekunden enthält.
  • Verwenden Sie für den Zeitzonen-Offset "z" in Kleinbuchstaben. Dies scheint eine GNU-Erweiterung zu sein.

Ich habe versucht, den Zeitzonen-Offset manuell über das zweite struct timezone * -Argument von gettimeofday() neu zu erstellen, aber auf meinem Rechner gibt es einen Offset von 0 zurück, der nicht korrekt ist. Die Manual-Seite für gettimefday() hat einiges über die Handhabung von Zeitzonen unter Linux zu sagen (Das ist das Betriebssystem, das ich getestet habe).

    
unwind 11.10.2009, 20:12
quelle
1

"%Y-%m-%d %T %z" , aber es scheint, dass %z eine GNU-Erweiterung ist.

    
gnud 11.10.2009 20:07
quelle
1

% z (Kleinbuchstabe z).

Dies erscheint jedoch nicht in der Posix-Spezifikation . Google hat mich in einem Kreis hierhin zurück gebracht.

>     
user181548 11.10.2009 20:06
quelle

Tags und Links