LINUX.ORG.RU

трабла с mktime


0

0

Всем привет!!

тачка: Linux 2.6.16.19-smp-MPPE #1 SMP Wed Oct 17 12:03:34 MSD 2007 i686 i686 i386 GNU/Linux

выдает ошибку при вызове mktime() Проверил - до 2057 года все ок! Что не так подскажите? Почему будущее время начиная с 2058 года не катит?

код:

#include <ctime>
#include <cstdio>
#include <cerrno>
#include <cstring>


int main()
{
    char* date = "2058-01-01 00:00:00";
    char* src_fmt = "%Y-%m-%d %H:%M:%S";
    tm time_moment;
    if( ::strptime( date, src_fmt, &time_moment ) == NULL )
    {
        printf( "Error in strptime: %s\n", strerror( errno ) );
    }

    time_t time_number;
    if( ::mktime( &time_moment ) == -1 )
    {
        printf( "Error in mktime: %s\n", strerror( errno ) );
    }
    return 0;
}

Ответ на: комментарий от mindsurfer

1) закопать 32битную архитектуру обратно
или
2) использовать более другие (не позикс) функции для работы с временем (тогда и time_t как такового не будет)

kemm
()
Ответ на: комментарий от k0l0b0k

у меня отказ с 2058)) может память портится, но не фатально для приложения? ))

mindsurfer
() автор топика
Ответ на: комментарий от k0l0b0k

А хрен его знает... Может, в данной реализации libc есть какой-нибудь противоестественный интеллект на эту тему.

kemm
()
Ответ на: комментарий от Cancellor

>Введение 64-битного формата вносит новую дату «закольцевания» через примерно 290 миллиардов лет, в 15:30:08 UTC в воскресенье, 4 декабря 292 277 026 596 года

оптимистично-то как! :)

Cosmicman ★★
()
Ответ на: комментарий от Cosmicman

>оптимистично-то как! :)

надо было делать 128 бит, а вообще сколько там нашему солнцу осталось... млрд 4?

dimon555 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.