Как лучше всего конвертировать UnixTime в дату?
Есть ли для него функция или алгоритм?
Как лучше всего конвертировать UnixTime в дату?
Есть ли для него функция или алгоритм?
Время Unix - секунды с начала эпохи (1970-01-01). В зависимости от того, что вы имеете в виду, вы можете преобразовать его в struct tm
с помощью localtime или преобразовать в строку с помощью strftime.
time_t t = time(NULL);
struct tm *tm = localtime(&t);
char date[20];
strftime(date, sizeof(date), "%Y-%m-%d", tm);
Как указано в руководстве по местному времени
Возвращаемое значение указывает на статически распределенное структура, которая может быть перезаписана последующими вызовами к любому из функции даты и времени.
Это то, что некоторые называют гонками данных. Это происходит, когда два или более потоков вызывают localtime
одновременно.
Чтобы защититься от этого, некоторые предлагают использовать localtime_s
, который является единственной функцией Microsoft. В системах POSIX вы должны использовать localtime_r
вместо этого
Функция localtime_r() делает то же самое, но сохраняет данные в предоставленной пользователем структуре.
Использование будет выглядеть как
time_t t = time(NULL);
struct tm res;
localtime_r(&t, &res);
Я собираюсь предположить, что у вас есть время в time_t
. Сначала вам нужно преобразовать это в struct tm
. Вы можете сделать это с помощью localtime
или gmtime
, в зависимости от того, хотите ли вы использовать локальный часовой пояс или GMT.
Затем вы можете отформатировать struct tm
как строку с strftime
. Например, чтобы получить дату типа 2012-11-24
, вы должны использовать формат "%Y-%m-%d"
.
См. также Преобразование Unix/Linux в Windows FILETIME
Эта функция должна конвертировать из UnixTime в Windows SYSTEMTIME
SYSTEMTIME intChromeTimeToSysTime(long long int UnixTime)
{
ULARGE_INTEGER uLarge;
uLarge.QuadPart = UnixTime;
FILETIME ftTime;
ftTime.dwHighDateTime = uLarge.HighPart;
ftTime.dwLowDateTime = uLarge.LowPart;
SYSTEMTIME stTime;
FileTimeToSystemTime(&ftTime, &stTime);
return stTime;
}
Попробуйте использовать time с localtime, Там вы найдете пример. Если это не ясно, не стесняйтесь задавать мне какие-либо вопросы.