Моя дилемма заключается в том, что если я запрашиваю более 6 месяцев или около того (я не знаю приблизительное число) из моих веб-сервисов (которые вызывают через JS), я ничего не получаю обратно. Другими словами, я должен ограничить его до 6 месяцев.
Итак, давайте рассмотрим этот сценарий:
$a = strtotime('June 3, 2011');
$b = strtotime('June 3, 2012');
Мне нужно разделить это на 6 месяцев, чтобы сделать 2 разных запроса к веб-сервису, чтобы каждый звонок запрашивал 6 месяцев.
Так что с $a
и $b
мне нужно разделить их на максимально возможное количество диапазонов дат, если взять общее количество месяцев, деленное на 6.
Первый диапазон дат, который мне нужен, с 1 июня 2011 года по 31 ноября 2011 года. Второй диапазон дат, который мне нужен, с 1 декабря 2011 года по 1 июля 2012 года.
Идея, которую я имел в виду, заключалась в том, чтобы найти количество месяцев, а затем, если оно больше, чем предельная переменная 6
, выполнить цикл и увеличить начальную дату на 6 месяцев для цикла.
Псевдокод (на самом деле я изначально написал его в JS, но подумал, что это будет проще сделать в PHP, потому что мне не придется иметь дело с несколькими асинхронными запросами):
var numMonths = monthDiff ( a, b ), ret = [], limit = 6, loopLimit = Math.ceil( numMonths / limit ), ranges = [];
if ( numMonths > limit ) {
for ( var i = 0; i<loopLimit; i++ ) {
var start = new Date(b);
var end = new Date ( b.setMonth( b.getMonth() + limit ) );
ranges.push( start, end );
}
}
Кто-нибудь знает краткий способ сделать это? Кто-нибудь может обнаружить какие-либо программные недостатки в этом?