Wie erhalten Sie ein formatierte Datum und die Uhrzeit für die aktuellen locale in C?
-
03-10-2019 - |
Frage
Was C-Funktion soll ich nenne ein formatierte Datum und die Uhrzeit für das Gebietsschema zu erhalten, in dem das Programm ausgeführt wird?
Ich frage diese Frage, weil ich in ein Problem laufen habe mit dem ClamAV-Daemon API. Der VERSION
Befehl gibt das Datum und die Uhrzeit der neuesten Virendefinitionen, aber der Code verwendet einen Aufruf an ctime
es zu formatieren. Soweit ich ctime
nicht die Datumzeit nach dem aktuellen Gebietsschema und verwendet die englischen Abkürzungen für die Wochentage und Monat im zurückgegebenen String-Format nicht sagen kann. Dies führt zu Problemen, wie mein Java-Programm, das das ClamAV-API verwendet nicht die aktuellen locale respektieren und somit erwartet, dass der Tag der Woche und Monatsnamen, die lokalen Abkürzungen haben.
Das Datums-Zeitformat im gleichen Format wie die von Ctime :
Www Mmm dd hh: mm: ss yyyy
Wo Www der Wochentag ist, Mmm der Monat in Buchstaben, dd den Tag des Monats, hh: mm:. Ss die Zeit und yyyy das Jahr
Ich konnte das Java-Programm neu zu schreiben, immer Englisch Daten übernehmen, aber ich würde glücklicher sein, einen Patch zu ClamAV vorzulegen, da es wie ein Fehler auf ihrer Seite zu mir scheint.
Lösung
strftime("%c", ...
sollten Sie die bevorzugten Datums- und Zeitdarstellung für die aktuelle locale. Oder (noch mit strftime
) können Sie ctime
das Format aber mit %b
für Strom-locale Monat Abkürzung, %a
für Strom-locale Wochentag Abkürzung emulieren, und so weiter.