Найти количество пропущенных месяцев
Добрый день. Убил целый день но решение не смог найти. Задача:
Есть массив с месяцами формата 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.
Тебе надо сделать то же самое, только с месяцами
<?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.
Сфотографируй или более расширеней гапиши