Временная метка Unix до 1970 года (даже до 1700 года), с использованием PHP

как я могу работать с датами до 01.01.1970?

мне нужно получить первый день месяца для дат с 1700 года.

как я могу этого добиться?

заранее спасибо!


person user198003    schedule 20.11.2010    source источник
comment
Можете ли вы привести пример входных данных и ожидаемого результата?   -  person Matteo Riva    schedule 20.11.2010
comment
Это дата по юлианскому календарю или по григорианскому календарю?   -  person PleaseStand    schedule 20.11.2010
comment
Возможно, вы используете старую версию PHP. PHP4 должен умереть. Версии PHP после 5.1 не имеют этого ограничения 1970 года. Он был изменен с 1901 года.   -  person bcosca    schedule 20.11.2010


Ответы (2)


Вы можете использовать DateTime.

Пример:

<?php
$d = new DateTime("1780-06-01");
echo $d->format("l"); //Thursday

Однако следует учитывать, что григорианский календарь был принят в разное время по всему миру.

person Artefacto    schedule 20.11.2010
comment
DateTime это будущее. +1. Обратите внимание, что вам нужен PHP 5.3, чтобы насладиться некоторыми из DateTime качеств (интервалы, CreateFromFormat и тому подобное). Если вы сомневаетесь, в руководстве будет указана необходимая версия. - person Pekka; 20.11.2010
comment
DateTime не может быть раньше 1901 года во всех случаях. $date = новый DateTime('1869-01-01 07:00:00'); echo $date-›format('U'); << Это работает. $date-›setTimestamp(-3187208524); echo $date-›format('Y-m-d H:i:s'); << Это не работает! - person vee; 25.08.2014
comment
@vee работает здесь (5.5.9). Может быть, вы используете 32-битную сборку PHP? Вместо этого попробуйте передать временную метку в виде числа с плавающей запятой (-3187208524.). - person Artefacto; 25.08.2014

Попробуйте использовать классы Zend Date или более старые класс PEAR Date

person Paul Dixon    schedule 20.11.2010