Мне нужно рассчитать количество десятилетий между двумя датами, которые могут охватывать форму 1708 до сегодняшнего дня – ограничения, насколько я могу собрать, – это 1970/1901 в рамках собственных функций PHP.
Может ли кто-нибудь посоветовать?
Благодаря!
Если у вас PHP> = 5.3.0:
$before = new DateTime('1708-02-02'); $decades = $before->diff(new DateTime())->y / 10;
Вы можете использовать Zend_Date . Это часть Zend Framework, но может использоваться автономно, вам не нужно устанавливать всю инфраструктуру для ее использования. Он может работать с датами за пределами 1901 года, если расширение bcmath
установлено на ваш PHP. Из теории работы Zend_date:
Это было возможно только потому, что Zend_Date не ограничивается отметками времени UNIX или целыми значениями. Расширение BCMath требуется для поддержки чрезвычайно больших дат за пределами диапазона Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. Дополнительные, крошечные математические ошибки могут возникнуть из-за присущих ограничений типов данных с плавающей точкой и округления, за исключением использования расширения BCMath.
Мне нравится рекомендовать компоненты Zend, потому что они ухожены, высококачественный код. Существуют и другие решения для этого, например, с использованием функций даты mySQL .
Я бы написал собственный метод.
Функции даты PHP основаны на эпохе (1969), поэтому там не будет большой помощи.
Если вы просто смотрите на годы, которые являются простой математикой
более высокий год – более ранний год = лет лет / 10 = десятилетия.
Если вы имеете в виду десятилетия от даже 01-10, 11-20, тогда вы можете сделать округление. (круглый срок, позднее, до ближайшего 10.