我的兩難處境是,如果我從我的webservices(通過JS調用)請求超過6個月左右(我不知道大概的數字),我什麼都得不到。換句話說,我必須限制它到6個月。如何根據月數來劃分日期範圍?
因此,讓我們考慮這樣的場景:
$a = strtotime('June 3, 2011');
$b = strtotime('June 3, 2012');
我需要6個月,以使2個不同的網絡servicerequests這樣每次調用請求6個月至拆分這件事。
因此,與$a
和$b
,我需要向上分割這些成許多日期範圍儘可能採取個月的總通過6.
我需要的第一個時間範圍是從2011年6月1日,分量時到2011年11月31日。我需要的第二個日期範圍是從2011年12月1日到2012年7月1日。
我想到的想法是查找月數,然後如果它大於極限變量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);
}
}
有誰知道這樣做的簡潔方法?任何人都可以發現任何程序上的缺陷?
順便說一下,我正在工作的服務器沒有PHP 5.3,所以我不能使用'DateTime :: diff' – 2011-06-03 20:21:59