2012-06-02 50 views
6

我有一個web調度應用程序,我目前正在改寫,並有一些關於如何處理定期約會的問題(我知道不缺「什麼是最好的方式來做到這一點「當談到重複應用)。php - 使用「星期二隔兩週」的日期工作

所以我想提供定期約會,用戶可以安排像週六,6月2日約會的約會,應該每隔一週重複上週六對一些預先確定的時間段(如1年)。

什麼PHP函數可以幫助我確定哪個日期「每隔一個星期六」落在?我附上了一張關於我的用戶界面的圖片以供澄清。

enter image description here

+1

像strtotime('下週六')''很容易,除非你想要更復雜的東西:) –

+0

所以它被用於日曆中的用戶,他們積極尋找有關他們約會的信息是否需要提醒?還是需要自己發送一些自動化的消息或類似的東西? –

+0

您好,我的應用程序可以讓用戶安排約會,然後向即將到來的約會的客戶發送提醒。在這種情況下,我希望爲用戶預訂「星期六每隔一週」(或我的用戶界面可創建的任何其他組合)。我擔心的是,僅僅增加14天(在這種情況下)並不總是意味着任命將在星期六進行。 – Greg

回答

14

我個人認爲可以使用DateTime對象並使用DateInterval類。

在你的上述情況下,你需要制定出第一個/下週六的日期,然後只需用P2W日期間隔

基本例如工作

$dow = 'saturday'; 
$step = 2; 
$unit = 'W'; 

$start = new DateTime('2012-06-02'); 
$end = clone $start; 

$start->modify($dow); // Move to first occurence 
$end->add(new DateInterval('P1Y')); // Move to 1 year from start 

$interval = new DateInterval("P{$step}{$unit}"); 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $date) { 
    echo $date->format('D, d M Y'), PHP_EOL; 
} 

/* 
Sat, 02 Jun 2012 
Sat, 16 Jun 2012 
Sat, 30 Jun 2012 
Sat, 14 Jul 2012 
… 
Sat, 20 Apr 2013 
Sat, 04 May 2013 
Sat, 18 May 2013 
Sat, 01 Jun 2013 
*/ 
+0

感謝您添加示例salathe –

+0

我想這就是我要找的!謝謝馬克。我會在早上試試這個,非常感謝! – Greg

+0

嗨馬克,它看起來像你使用的一些類只在PHP 5.3.x(DatePeriod,DateInterval)中可用。不幸的是,我今天早上試圖升級我的服務器,並且運行了一大堆我正在運行的joomla站點,所以我不得不恢復到5.2.9。使用5.2.9功能的某種風格,是否有類似的解決方案? – Greg

0

嗯,我會先設定開始日期;當這一天來臨,你只需要:

$next_date = strtotime('+2 weeks'); 

這讓你在同一天,但只有兩個星期後。並且這個循環繼續:)

0

可以使用數據庫列來存儲你的時間在幾秒鐘內:

UPDATE appointments SET dtime=UNIX_TIMESTAMP() WHERE id=5 

然後,你可以檢查這個值,無論特定時期剛剛來過/通過:

mysql_query("SELECT id FROM appointments WHERE dtime>='".(strtotime("-1 week"))."'); 

所選擇的ID是1周或更長。

相關問題