Я хочу получить текущее время в формате человеческого чтения, для этого я выбираю strftime.
Функция выглядит так:
std::string crypto::tools::utc_time_str() {
time_t nowtime = time(0);
struct tm mytime;
gmtime_r(&nowtime, &mytime);
char buf[32];
strftime(buf, 32, "%Y-%m-%dT%H:%M:%S", &mytime);
return buf;
}
Это хорошо, я могу получить такую строку:
2024-08-29T07:25:44
Еще одно требование — закодировать его в URL-адресе. В данном случае все, что мне нужно, — заменить «:
» на «%3A
».
Я предполагаю, что это будет легко.
но кажется это невозможно сделать в strftime
.
Я пробую следующее, все не удалось:
strftime(buf, 32, "%Y-%m-%dT%H%3A%M%3A%S", &mytime);
2024-08-29T07Thursday28Thursday
strftime(buf, 32, "%Y-%m-%dT%H%\3A%M%\3A%S", &mytime);
2024-08-29T07%A29%A39
Я хочу, чтобы эта функция работала как можно быстрее, поэтому выделение новой строки — не лучший выбор для меня.
Сможет ли strftime
это сделать?
%
— зарезервированный символ, а %3A
считается недопустимой последовательностью. Вы хотели %%3A
.
%%
Заменено на%
.