Для начала, пожалуйста, имейте меня как новичка в C ++
Конечная цель - сохранить дату в формате DDMMYY, например, "120319", в массиве char
с 6 байтами.
Для начала у меня есть wstring
, который получает метку времени Unix, например "155xxxxxxx".
std::wstring businessday = L"155xxxxxxx"
Затем я преобразую ее в wchar_t*
.
const wchar_t* wcs = businessday.c_str();
Впоследствии, после объявления массива char из 10 байтов, я преобразую wchar_t*
в многобайтовую строку.
char buffer[10];
int ret;
printf ("wchar_t string: %ls \n",wcs);
ret = wcstombs ( buffer, wcs, sizeof(buffer) );
if (ret==32) buffer[31]='\0';
if (ret) printf ("multibyte string: %s \n",buffer);
Так что теперь массив char
с именем buffer
содержит метку времени Unixформатированная строка, т.е. "155xxxxxxx".
Как я могу преобразовать ее в char
массив из 6 байтов, используя формат даты, такой как DDMMYY, то есть "120319"?
Я используюпредстандартная версия c ++ (MS VC ++ 6)
В ответ на ответ пользователя user4581301 :
long myLong = std::stol( buffer );
time_t timet = (time_t)myLong;
std::string tz = "TZ=Asia/Singapore";
putenv(tz.data());
std::put_time(std::localtime(&timet), "%c %Z") ;
struct tm * timeinfo = &timet;
time (&timet);
timeinfo = localtime (&timet);
strftime (buffer,80,"%d%m%Y",timeinfo);