Problema com strptime () - %p não é levado em consideração
Pergunta
Estou tentando converter uma data em um determinado formato usando strptime
, e percebi que as informações sobre AM/PM estão perdidas. Não sei por que.
Aqui está o código.
struct tm t;
strptime("Wed 4/18/2007 4:28:22 PM", "%a %m/%d/%Y %H:%M:%S %p", &t);
std::cout<<t.tm_hour<<endl;
strptime("Wed 4/18/2007 4:28:22 AM", "%a %m/%d/%Y %H:%M:%S %p", &t);
std::cout<<t.tm_hour<<endl;
Alguém pode me dizer qual é o propósito de ter o %p
especificador em strptime
?
Obrigado antecipadamente, AJ
Solução
O problema aqui está com %H
, que lerá a hora em 24 horas formato e ignore AM/PM. Se você quiser ler a hora 12 horas formato e utilizar AM/PM %I
no lugar de %H
.
Você pode se referir ao manual aqui.
Outras dicas
A partir de esse site:
%p = o equivalente do local de AM ou PM
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow