Как собрать даты по отношению к конкретному значению даты в php? - PullRequest
0 голосов
/ 31 октября 2019

Я хочу показать клиенту сообщение об истечении срока действия, истекающего в этом месяце, чтобы он мог продлить его. Время возобновления начинается с последнего месяца этой истекающей суммы, то есть:

$renewDate = date("Y-m-d", strtotime("-1 month", $currentdate));

У меня есть

Дата истечения срока действия: Сумма

2019-11-31: 15

2019-11-22: 20

2020-5-12: 30

2019-11-2: 10

Как собрать только те суммы, которые не меньше даты обновленияи находятся в диапазоне за последний месяц.

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Предположим, у вас есть массив с датами истечения срока действия:

$arr = [
  0=>[
    'date' => '2019-12-31',
    'amount' => 15
  ],
  1=>[
    'date' => '2019-12-22',
    'amount' => 22
  ],
    2=>[
    'date' => '2020-5-12',
    'amount' => 33
  ],
    3=>[
    'date' => '2019-10-2',
    'amount' => 6
  ],
];

Затем мы перебираем массив, получаем каждую дату и конвертируем ее с помощью strtotime () с помощью вычитания 1 месяца и сравниваем его с 2 условием -если дата больше, чем strtotime () текущей даты и меньше, чем strtotime () текущей даты +1 месяц, мы выполняем условие диапазона и сохраняем данные:

$data = [];
foreach ($arr as $key => $value) {
   if(strtotime(date('Y-m-d')) <= strtotime($value['date'].'-1 month') && 
      strtotime(date('Y-m-d').'+1 month') >= strtotime($value['date'].'-1 month'))
   {
      $data[] = $value;
   }
}

var_dump($data);
0 голосов
/ 31 октября 2019

Поиграв с ответом @Angel, я понял:

  $arr = [
      0=>[
        'date' => '2019-12-1',
        'amount' => 15
      ],
      1=>[
        'date' => '2019-11-31',
        'amount' => 22
      ],
      2=>[
        'date' => '2019-11-27',
        'amount' => 22
      ],
        3=>[
        'date' => '2019-11-12',
        'amount' => 33
      ],
        4=>[
        'date' => '2019-10-2',
        'amount' => 6
      ],
    ];

    $data = [];
    foreach ($arr as $key => $value) {
       if(strtotime(date('Y-m-d')) <= strtotime($value['date']) && 
  strtotime(date('Y-m-d').'+1 month') >= strtotime($value['date']))
       {
          $data[] = $value;
       }
    }
    echo "<pre>";
    print_r($data);
    echo "<pre>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...