Ребятки есть задание: 8. Пользователь в форму вводит дату. Узнайте какой день недели был 100 лет назад есть решение: PHP: if(empty($piecesDATA1)) { echo "Данные еще ввели"; } else { $q = mktime(0,0,0, $piecesDATA1[1], $piecesDATA1[2], $piecesDATA1[0]); // Входящая дата $w = 3153600000+2160000; // 100 лет на секунды + 25 дней компенсации высокостного года $e = $q - $w; echo date('l',$e) . '<br>'; // день недели echo date('Y-m-d',$e); // год минус 100 лет назад } оно меня как бы устраивает с учетом тех инструментов которыми мне можно пользоваться (это ДЗ с курсов), но вот проблема, если я ввиду дату в период с 2001 по 2039 года, все нормально высчитывается, а если ввести например < 1999 или 2040 >, то уже не работает по причине того что mktime выдает странные данные не такие как мне нужно, а нужно мне вот такие "1487797200" -десятизначное число на 148, если задать дату "<= 1999" или "2040 =>" gjzdkz.ncmz 8-9 значные цифры изза которых конечный timestamp выдает не правильный результат 1 почему так происходит? 2. какие варианты правки задания, инструменты для использования только стандартные функции mktime time date strtotime не каких объектов или того что мы не проходили...
mktime вернёт время unix в секундах, https://ru.wikipedia.org/wiki/UNIX-время так что 100 лет посчитать сложновато используя эти секунды, они в 32 или 64 битные должны быть, тогда диапазон возрастает. Для точных вычислений в PHP есть библиотеки, https://secure.php.net/manual/ru/book.bc.php https://secure.php.net/manual/ru/book.gmp.php ещё посмотри какой максимальное int число тебе доступно PHP_INT_MAX. https://secure.php.net/manual/ru/language.types.integer.php Это можно использовать? strtotime тут можно просто написать -100 years --- Добавлено --- PHP: var_export( date('l jS \of F Y h:i:s A', strtotime('-100 years')) );