Подтвердить что ты не робот

UnixTime для чтения

Как лучше всего конвертировать UnixTime в дату?

Есть ли для него функция или алгоритм?

4b9b3361

Ответ 1

Время 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);

Ответ 2

Я собираюсь предположить, что у вас есть время в time_t. Сначала вам нужно преобразовать это в struct tm. Вы можете сделать это с помощью localtime или gmtime, в зависимости от того, хотите ли вы использовать локальный часовой пояс или GMT.

Затем вы можете отформатировать struct tm как строку с strftime. Например, чтобы получить дату типа 2012-11-24, вы должны использовать формат "%Y-%m-%d".

Ответ 3

См. также Преобразование 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;

}

Ответ 4

Попробуйте использовать time с localtime, Там вы найдете пример. Если это не ясно, не стесняйтесь задавать мне какие-либо вопросы.