Top.Mail.Ru
Ответы

Найти количество пропущенных месяцев

Добрый день. Убил целый день но решение не смог найти. Задача:
Есть массив с месяцами формата 01.2022
$array_data[] = ['2022-07', '2022-08'] и т.д. до февраля 2023 года. В этом массиве отсутствует октябрь 2022 года.
Необходимо найти количество пропущенных месяцев. Кто знает помогите :)

По дате
По рейтингу
Аватар пользователя
Мыслитель

from datetime import datetime, timedelta

# Ваш массив с данными
array_data = ['2022-07', '2022-08']

# Преобразуем строки в объекты даты для удобства работы
start_date = datetime.strptime(array_data[0], '%Y-%m')
end_date = datetime.strptime(array_data[-1], '%Y-%m')

# Создаем полный список месяцев, начиная с первого элемента массива и заканчивая последним
all_months = []
current_date = start_date
while current_date <= end_date:
all_months.append(current_date.strftime('%Y-%m'))
current_date += timedelta(days=32)

# Находим пропущенные месяцы путем вычитания из полного списка данных
missing_months = list(set(all_months) - set(array_data))

# Количество пропущенных месяцев
count_missing_months = len(missing_months)

print(count_missing_months) # Выводим результат

Аватар пользователя
Мыслитель

python

Аватар пользователя
Гуру

Допустим, у тебя есть массив чисел: a=[2,3,5,7...] Ты хочешь найти, какие числа пропущены. Идёшь с i=1, n=0 в цикле, если a[n]!=i то число i пропущено, увеличиваешь i. Если равно, то число есть, увеличиваешь i и n.

Тебе надо сделать то же самое, только с месяцами

Аватар пользователя
Просветленный
1234567891011121314151617181920212223242526272829303132
 <?php 
// Заданный массив с месяцами 
$arr = array( 
    0 => '2022-01', 
    1 => '2022-02', 
    2 => '2022-03', 
    // ... остальные элементы массива ... 
    21 => '2023-11', 
    22 => '2023-12' 
); 
 
// Создаем массив со всеми возможными месяцами 
$allMonths = array(); 
$startMonth = '2022-01'; 
$endMonth = '2023-12'; 
$currentMonth = $startMonth; 
 
while ($currentMonth <= $endMonth) { 
    $allMonths[] = $currentMonth; 
    $currentMonth = date('Y-m', strtotime($currentMonth . ' + 1 month')); 
} 
 
// Используем функцию array_diff() для нахождения разницы между массивами 
$missingMonths = array_diff($allMonths, $arr); 
 
// Выводим результат 
echo "Отсутствуют следующие месяцы:\n"; 
foreach ($missingMonths as $missingMonth) { 
    echo $missingMonth . "\n"; 
} 
?> 
 
Аватар пользователя

Добрый день! Чтобы найти количество пропущенных месяцев в вашем массиве, можно использовать следующий PHP код:

```php
$array_data = ['2022-07', '2022-08']; // Ваш исходный массив с месяцами

function getMissingMonths($startMonth, $endMonth, $array_data) {
$missingMonths = 0;
$currentMonth = $startMonth;

while ($currentMonth <= $endMonth) {
if (!in_array($currentMonth, $array_data)) {
$missingMonths++;
}

$currentMonth = date('Y-m', strtotime("$currentMonth +1 month"));
}

return $missingMonths;
}

$startMonth = '2022-01';
$endMonth = '2023-02';
$missingMonthsCount = getMissingMonths($startMonth, $endMonth, $array_data);

echo "Количество пропущенных месяцев: " . $missingMonthsCount;
```

Этот код определит количество пропущенных месяцев между январем 2022 и февралем 2023 года в вашем массиве $array_data.

Аватар пользователя
Ученик

Сфотографируй или более расширеней гапиши



Видео по теме