2014-02-18 3 views
2

Мне было интересно, что лучше всего делать здесь. Мне было назначено задание, и мне нужно обновить класс Date, который использует Ctime.Обработка данных до 1970 г. C++

Класс должен теперь работать на дату до 1970 года я смотрел вокруг, и я не нашел много ...

Так что я думаю, мой вопрос, что будет лучшим способом для достижения этой цели?

Диапазон дат из [1970-2037] к [1900-2037]

+0

Если вам нужно справиться с 1900 годом, у вас проблемы. 32-разрядный тип подписанного типа может обрабатывать диапазон Dec 1901. Jan 2038, поэтому обработка остальной части 1901 года и всего 1900 требует чего-то другого. Вы просто пытались использовать отрицательные числа в качестве метки времени? –

+0

Самое простое решение - 64 бита. Тем не менее, вам может потребоваться написать собственное «localtime» (что может быть интересно - время в Амстердаме было GMT + 0h 19m 32,13s!) – MSalters

+1

'time_t' обычно представляет собой целочисленный тип со знаком, а во многих реализациях стандартные функции правильно работать с отрицательными значениями. Но 32 бита идут только с 1901-12-13 до 2038-01-19. –

ответ

0

Вы можете хранить дату в качестве знакового целого числа дней, прошедших с 1970-01-01 или любой другой эпохи. Отрицательными датами будут дата до 1970 года.

Или вы могли бы использовать Boost.Date_Time library.

3

Предполагая, что вы имеете в виду CTime из MFC, если вы включите OLE вы можете использовать COleDateTime как капли в замене. По документации он поддерживает даты «с 1 января 100 года по 31 декабря 9999 года».

+0

Thansk Я решил работать с ColeDateTime после прочтения документа – SKTLZ

Смежные вопросы