我手動創建了以下數組(底部),我希望僅使用兩個可輕鬆爆炸(explode())的字符串以編程方式創建它。使用基於兩個日期的日期信息創建一個數組
$min_date = '2012-03-01 00:00:00';
$max_date = '2012-04-25 00:00:00';
我已經爆炸()的字符串,以及發現多少個月是兩個日期
$min_date = explode('-',$min_date);
$min_date['year'] = intval($min_date[0]);
$min_date['month'] = intval($min_date[1]);
$min_date['day'] = intval($min_date[2]);
$max_date = explode('-',$max_date);
$max_date['year'] = intval($max_date[0]);
$max_date['month'] = intval($max_date[1]);
$max_date['day'] = intval($max_date[2]);
$months_between = ($max_date['month'] - $min_date['month']) + 12 * ($max_date['year'] - $min_date['year']);
返回1個
cal_days_in_month()
功能似乎太有用之間,我只是不知道如何...
$days_in_month = cal_days_in_month(CAL_GREGORIAN, $month, $year)
這裏是我手動創建的數組!
$periods = array(
'0' => array(
'month'=>'march',
'week'=>'1',
'days'=>'4',
'readable'=>' Thurs Mar, 01, 2012 - Sun Mar, 04, 2012',
'created_at_min'=>'2012-03-01 00:00:00',
'created_at_max'=>'2012-03-04 24:00:00'
),
'1' => array(
'month'=>'march',
'week'=>'2',
'days'=>'7',
'readable'=>' Mon Mar, 05, 2012 - Sun Mar, 11, 2012',
'created_at_min'=>'2012-03-05 00:00:00',
'created_at_max'=>'2012-03-11 24:00:00'
),
'2' => array(
'month'=>'march',
'week'=>'3',
'days'=>'7',
'readable'=>' Mon Mar, 12, 2012 - Sun Mar, 18, 2012',
'created_at_min'=>'2012-03-12 00:00:00',
'created_at_max'=>'2012-03-18 24:00:00'
),
'3' => array(
'month'=>'march',
'week'=>'4',
'days'=>'7',
'readable'=>' Mon Mar, 19, 2012 - Sun Mar, 25, 2012',
'created_at_min'=>'2012-03-19 00:00:00',
'created_at_max'=>'2012-03-25 24:00:00'
),
'4' => array(
'month'=>'march',
'week'=>'5',
'days'=>'6',
'readable'=>' Mon Mar, 26, 2012 - Sun Mar, 31, 2012',
'created_at_min'=>'2012-03-26 00:00:00',
'created_at_max'=>'2012-03-31 24:00:00'
),
'5' => array(
'month'=>'april',
'week'=>'1',
'days'=>'1',
'readable'=>' Sun Apr, 1, 2012',
'created_at_min'=>'2012-04-01 00:00:00',
'created_at_max'=>'2012-04-01 24:00:00'
),
'6' => array(
'month'=>'april',
'week'=>'2',
'days'=>'7',
'readable'=>' Mon Apr, 2, 2012 - Sun Apr, 8, 2012',
'created_at_min'=>'2012-04-01 00:00:00',
'created_at_max'=>'2012-04-08 24:00:00'
),
'7' => array(
'month'=>'april',
'week'=>'3',
'days'=>'7',
'readable'=>' Mon Apr, 9, 2012 - Sun Apr, 15, 2012',
'created_at_min'=>'2012-04-09 00:00:00',
'created_at_max'=>'2012-04-15 24:00:00'
),
'8' => array(
'month'=>'april',
'week'=>'4',
'days'=>'7',
'readable'=>' Mon Apr, 16, 2012 - Sun Apr, 22, 2012',
'created_at_min'=>'2012-04-16 00:00:00',
'created_at_max'=>'2012-04-22 24:00:00'
),
'9' => array(
'month'=>'april',
'week'=>'5',
'days'=>'3',
'readable'=>' Mon Apr, 23, 2012 - Wed Apr, 25, 2012',
'created_at_min'=>'2012-04-16 00:00:00',
'created_at_max'=>'2012-04-25 00:00:00' // note last day timestamp needs to be 00:00:00
),
);
在我深入探討之前,PHP提供的任何東西都可以提供極大的幫助嗎?
$weeks = array(
'may' = array(1,2,3,4,5),
'april' = array(1,2,3,4,5),
);
'24:00:00'不是真正的時間... :) – deceze 2012-04-26 00:07:26
我寫了一個答案的一半,但我沒有耐心弄清楚所有血淋淋的細節。基本上你要找的是['strtotime'](http://php.net/strtotime)函數和很多['date'](http://php.net/date)函數。增加'strtotime'創建的時間戳,從開始日期到結束日期循環。使用'date'的各種選項獲取關於某個特定日期的所有信息,然後使用星期幾,日,月,日等等做一些數學計算。 – deceze 2012-04-26 00:22:15
'strtotime'創建一個unix時間戳這似乎是一個堅果循環,這是你的意思? – ThomasReggi 2012-04-26 00:34:58