Как вы получаете отформатированную дату и время для текущей локали в C? - PullRequest
0 голосов
/ 06 мая 2010

Какую функцию C я должен вызывать для получения отформатированной даты и времени для локали, в которой выполняется программа?

Я задаю этот вопрос, потому что столкнулся с проблемой при использовании API демона ClamAV. Команда VERSION возвращает дату и время последних определений вирусов, но код использует вызов ctime для его форматирования. Насколько я могу судить, ctime не форматирует дату и время в соответствии с текущей локалью и использует английские сокращения для дней недели и месяца в возвращаемой строке. Это вызывает проблемы, так как моя Java-программа, использующая ClamAV API , учитывает текущую локаль и, следовательно, ожидает, что день недели и название месяца будут иметь местные сокращения.

Формат даты и времени должен быть в том же формате, что и ctime :

Www Ммм дд чч: мм: сс гггг

Где Www - день недели, Mmm - месяц буквами, dd день месяца, чч: мм: сс время и гггг год.

Я мог бы переписать Java-программу так, чтобы она всегда принимала английские даты, но я бы с радостью представил патч для ClamAV, так как это кажется мне ошибкой на их стороне.

1 Ответ

4 голосов
/ 06 мая 2010

strftime("%c", ... должно дать вам предпочтительное представление даты и времени для текущей локали. Или (все еще с strftime) вы можете эмулировать формат ctime, но с %b для сокращения месяца текущего языка, %a для сокращения дня недели текущего языка и т. Д.

...