Как вы получаете отформатированную дату и время для текущей локали в C?
-
03-10-2019 - |
Вопрос
Какую функцию C я должен позвонить, чтобы получить отформатированную дату и время для локали, где выполняется программа?
Я задаю этот вопрос, потому что я столкнулся с проблемой, используя API Clamav Daemon. То VERSION
Команда возвращает дату и время последних определений вирусов, но код использует вызов ctime
отформатировать его. Насколько я могу сказать ctime
Не отформатирует DateTime в соответствии с текущей локалий и использует английские сокращения в течение нескольких дней недели и месяце в возвращенной строке. Это вызывает проблемы, как моя программа Java, которая использует API Clamav API делает Уважайте текущую локаль и, таким образом, рассчитывают за день недели и месяца, чтобы иметь местные сокращения.
Формат данных DateTime должен быть в том же формате, что и производится Ctime.:
Www mmm dd hh: мм: ss yyyy
Где www - это будний день, ммм месяц в письмах, дд день месяца, ч.х: мм: SS Time, а Yyyy год.
Я мог бы переписать программу Java, чтобы всегда предположить, что английские даты, но я был бы счастливее, чтобы отправить патч для Clamav, как это похоже на борту на их стороне.
Решение
strftime("%c", ...
Должна дать вам предпочтительный представитель даты и времени для текущей локали. Или (все еще с strftime
) вы можете эмулировать ctime
формат, но с %b
Для сокращения месяца текущего языка, %a
Для сокращения текущего месторождения в будние дни, и так далее.