Come si ottiene una data formattato e tempo per la locale corrente in C?
-
03-10-2019 - |
Domanda
Cosa C funzione dovrei chiamare per ottenere una data formattato e il tempo per il locale in cui è in esecuzione il programma?
sto chiedendo questa domanda, perché ho incontrato un problema utilizzando l'API ClamAV daemon. Il comando VERSION
restituisce la data e l'ora delle ultime definizioni dei virus, ma il codice utilizza una chiamata a ctime
formattarlo. Per quanto posso dire ctime
non formattare il datetime in base alla localizzazione corrente e utilizza l'abbreviazioni inglesi per i giorni della settimana e del mese nella stringa restituita. Questo fa sì che i problemi come il mio programma Java che utilizza l'API ClamAV fa rispettano l'ambiente corrente e si aspetta quindi il giorno della settimana e del mese nome di avere le abbreviazioni locali.
Il formato datetime avrebbe bisogno di essere nello stesso formato come quello prodotto da ctime :
Www MMM GG hh: mm: ss aaaa
Dove WWW è il giorno della settimana, Mmm il mese in lettere, dd il giorno del mese, hh: mm:. Ss il tempo, e yyyy l'anno
ho potuto riscrivere il programma Java per assumere sempre date inglesi ma sarei più felice di presentare una patch per ClamAV come sembra come un insetto dalla loro parte per me.
Soluzione
strftime("%c", ...
dovrebbe darvi la data preferita e la rappresentazione tempo per il locale corrente. O (ancora con strftime
) è possibile emulare il formato di ctime
ma con %b
per la corrente-locale mesi sigla, un'abbreviazione per %a
corrente locale nei giorni feriali, e così via.