Comment obtenir une date et d'heure formatée selon les paramètres locaux en C?
-
03-10-2019 - |
Question
Quelle est la fonction C dois-je appeler pour obtenir une date et l'heure formatées pour les paramètres régionaux où le programme est en cours d'exécution?
Je pose cette question parce que je l'ai rencontré un problème en utilisant l'API démon ClamAV. La commande VERSION
renvoie la date et l'heure des dernières définitions de virus, mais le code utilise un appel à ctime
pour le formater. Pour autant que je peux dire ctime
ne forme pas le datetime selon les paramètres locaux et utilise les abréviations des Anglais pour les jours de la semaine et le mois dans la chaîne retournée. Cela provoque des problèmes que mon programme Java qui utilise l'API ClamAV ne respectent les paramètres régionaux en cours et attend donc le jour de la semaine et le nom mois pour avoir les abréviations locales.
Le format datetime devrait être dans le même format que celui produit par ctime :
Www Mmm dd hh: mm: ss aaaa
Où Www est le jour de la semaine, le mois Mmm en lettres, dd le jour du mois, hh: mm:. Ss temps, et aaaa l'année
Je pourrais réécrire le programme Java pour assumer toujours les dates en anglais mais je serais plus heureux de soumettre un patch pour ClamAV comme il semble être un bug de leur côté pour moi.
La solution
strftime("%c", ...
devrait vous donner la date préférée et la représentation du temps pour les paramètres régionaux en cours. Ou (toujours avec strftime
), vous pouvez imiter le format de ctime
mais avec %b
pour abréviation mois courant locale, %a
pour abréviation en semaine de courant locale, et ainsi de suite.