@BjornBorn

Как узнать, какой день недели был 100 дней назад?

Как узнать, какой день недели был 100 дней назад?

Я пробовал сделать вот так:

$week = [
    'воскресенье',
    'понедельник',
    'вторник',
    'среда',
    'четверг',
    'пятница',
    'суббота',
    ];

$today = date_create('now');

date_modify($today, '- 100 days');

$dateFormat = date_format($today, 'z');

$day = date('w', $dateFormat);

echo $week[$day];

Но это неправильно. Если вывести на экран переменную $day,

$day = date('d m Y', $dateFormat);
echo $day;

то покажет: 01 01 1970.

Во втором варианте то же самое:

$week = [
    'воскресенье',
    'понедельник',
    'вторник',
    'среда',
    'четверг',
    'пятница',
    'суббота',
    ];

$today = date('z',time());

$ago = $today - 100;

$day = date('w', $ago);

echo $week[$day];

Показывает день, который был 1 января 1970 года.
Я неправильно указываю второй параметр в функции date?
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
kawabanga
@kawabanga
// Создаем объект DateTime с текущей датой
$date = new DateTime();

// Вычитаем 100 дней
$date->modify('-100 days');

// Выводим результат в нужном формате
echo  $date->format('N'); // 1 (понедельник) до 7 (воскресенье)


Ну а дальше подставляете свой массив.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@motcart
Получить текущий date(mktime(0));
Отнять от него 100 дней, т. е. 8640000
Результат отображаете в виде названия дня недели
echo date("l", (mktime(0)-8640000));
10 лет не писал на пхп, но вроде должно сработать
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Не надо костылить и велосипедить. Всё придумано до нас:
echo (new IntlDateFormatter("ru_RU", pattern: 'EEEE, d MMMM y'))
	->format(new DateTimeImmutable('100 days ago'));
// вторник, 30 апреля 2024
Ответ написан
@grek_cheburek
Программист самоучка
Я бы сделал на mktime. где указывается число, минуснуть на 100 и получим секунды того дня. Дальше взять date() поставить w и поставить секунды из mktime во-второй аргумент.
<?php
$mktime = mktime(12,00,00,8,8-100,2024);
echo date("w",$mktime);
?>
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы