Антон Е.
279 сообщений
#14 лет назад
Добрый день, кто-нибудь сможет мне подсказать как перевести дату в unixtime если дата меньше 1900 года
перевожу вот так
echo(mktime(0, 0, 0, 03, 10, 1900));

тестирую в денвере winxp
даты после 1902 года работаю нормально, меньше не принимает, в чем подвох, не верю.чтоб нельзя было получить дату раньше этого года.
Вот,что написано в мануале
Цитата:
Before PHP 5.1.0, negative timestamps were not supported under any known version of Windows and some other systems as well. Therefore the range of valid years was limited to 1970 through 2038.

Заранее благодарен, тем кто сможет подсказать в каком направлении двигаться
Сергей Д.
326 сообщений
#14 лет назад
Что такое unixtime? Это число секунд прошедших после 1 января 1970 года. Разрядности числа int (4 байта) хватает до примерно 2038 года.
В php начиная с некоторой версии решили принимать неким образом и отрицательные значения. Ну посчитайте, до какой даты назад хватит 4 байта?
Короче: если вам нужно представлять произвольные даты, не используйте unixtime
Антон С.
1316 сообщений
#14 лет назад
А почему не написать свою функцию, если так уже надо?

От даты отнимаете 1 января 1970 года. Получается отрицательное число в днях и переводите в секунды.
Андрей К.
1172 сообщения
#14 лет назад
The number of the year, may be a two or four digit value, with values between 0-69 mapping to 2000-2069 and 70-100 to 1970-2000. On systems where time_t is a 32bit signed integer, as most common today, the valid range for year is somewhere between 1901 and 2038. However, before PHP 5.1.0 this range was limited from 1970 to 2038 on some systems (e.g. Windows).

Не вижу смысла хранить даты с точностью до секунды для бородатых лет.
Роман Беляев
16382 сообщения
#14 лет назад
Цитата ("Lisio"):

Не вижу смысла хранить даты с точностью до секунды для бородатых лет.


+1
Антон Е.
279 сообщений
#14 лет назад
Цитата ("Lisio"):
Не вижу смысла хранить даты с точностью до секунды для бородатых лет.

Согласен, просто думал, что решение какое-то все таки есть, но видимо ошибался.
Сергей К.
2345 сообщений
#14 лет назад
Оффтопик
Цитата ("Lisio"):
Не вижу смысла хранить даты с точностью до секунды для бородатых лет.
А если вам приспичит в прошлое смотаться, а у вас нет точной даты? Только неделю знаете? А плутония у ливицев уже не спереть?
Так что -1
Андрей К.
1172 сообщения
#14 лет назад
5ergunka, сверхважная задача для php, ага.
Вадим Т.
3240 сообщений
#14 лет назад
Цитата ("_VersouL_"):
Добрый день, кто-нибудь сможет мне подсказать как перевести дату в unixtime если дата меньше 1900 года

Пока используется 32-битный UNIXTIME, никак.
Вот когда перейдут на 64-битное значение, тогда и можно будет работать с UNIXTIME, датируя плюс-минус 300 миллиардов лет от настоящего времени. Кстати, еще нужно, чтобы были созданы точные алгоритмы преобразования количества секунд в любые древние календарные даты, не уверен что на данный момент такие алгоритмы вообще существуют (из-за сложности), хотя мало ли...

Поэтому на данный момент для работы с бородатыми годами лучше всего использовать PHP класс DateTime.
Николай М.
1895 сообщений
#14 лет назад
Во дебилизм, не чтоб сделать нормальный тип данных даты и времени... Всегда плевался на этот костиль.