2011-10-16 51 views
0

我有一個函數接受日期和時間以及發生的次數。我正在使用while循環在同一天和同一時間嘗試插入和插入每週。例如,如果情節是星期一晚上7點,我想在每個星期一的下午7點插入發生的事件數量。從日期和時間插入每週信息php

這裏是我的代碼和while循環:

$sEpsAirDate = strtotime($aVars['air_date'].' '.$aVars['air_time'].$aVars['air_ampm']); 

      $i = 1; 
      while ($i <= $aVars['repeat_count']) { 

       $sEpsAirDate = // How can I alter this variable to change the date to every week?      

       db_res(
        "INSERT INTO `hm_episodes_main` SET 
         `show_id` = '{$aVars['show_id']}', 
         `title` = '{$sEpsTitle}.{$i}', 
         `season` = '{$aVars['eps_season']}', 
         `uri` = '{$sUri}.{$i}', 
         `desc` = '{$sEpsDesc}', 
         `air_date` = '{$sEpsAirDate}' 
       "); 

       $i++ 
      } 

我將如何改變$ sEpsAirDate變量準確進入上一週的每一天,在給定的時間?

回答

1

使用mktime()以及第一集的年份,那麼您可以通過在mktime(如上所示)中向日期參數添加7的增量,爲接下來的幾周創建新日期。

然後格式輸出到這樣的SQL:

$datetime_str = date("Y-m-d H:i:s", $next_ep_timestamp); 
//gives a date-str like '2011-10-16 12:59:01' 
1

是在我腦海中只是添加秒一週的sEpsAirDate與環中每次迭代的第一個想法:

$sEpsAirDate += 604800; 

如果需要保存,你可以把它複製第一空氣日期到一個單獨的變量,然後做這樣的事情($改變LCV我以0開始):

$sEpsAirDate = $sEpsFirstAirDate+(604800*$i); 

但是這種方法有可能創造問題夏令時的潛力...所以它可能是將日期分成年,月和日變量更安全a然後通過每天添加($ i * 7)來重新創建每個循環迭代的$ sEpsAirDate。 ......因此,像(再次改變LCV $ i到從0開始):月

$next_ep_timestamp = mktime ($hour,$min,$sec, $first_ep_month, $first_ep_day + 7 * $weekcount, $first_ep_year); 

「初始化」 這通過設置相應的變量日期:

$sEpsAirDate = mktime($sEpsAirDateHour, $sEpsAirDateMinute, 0, $sEpsAirDateMonth, $sEpsAirDateDay+($i*7), $sEpsAirDateYear);