2014-03-31 176 views
1

我已經搜查,搜查,但似乎無法找到任何東西,將適合什麼,我試圖做的,我似乎無法弄清楚如何使它工作的第三個星期一。計算一個月

以下是查看: 我的電腦俱樂部在每月的第三個星期一開會,一週後俱樂部董事會開會。在我們的俱樂部網站,他們每月都在手動更改此日期... :(

我想用PHP來自動執行它。我有一點點運氣,但在大多數情況下它不會出來的權利。

這裏是我使用的代碼示例:我加了$ thirdtue變量,因爲在$ thirdmon變量檢查在實際會議日期引起一個問題,它跳躍到未來幾個月

//Set Default Time Zone 
date_default_timezone_set('America/New_York'); 

//Define Variables Needed 
$now = date("U"); 
$currmonth = date("n"); 
$curryear = date("Y"); 
$monthyear = date("F Y"); 
$thirdmon = date('U', strtotime($monthyear.' third monday')); 
$thirdtue = date('U', strtotime($monthyear.' third tuesday')); 

//Check for current date before or after third monday of the current meeting month 
if ($now > $thirdtue) { 
    $monthyear = date("F Y", strtotime('next month')); 
    $thirdmon = date('U', strtotime($monthyear.' third monday')); 
} 

echo date("l F d, Y", $thirdmon); 

會議日期,所以我檢查第三個週二,它不會跳到現在會議日期的午夜。

現在奇怪的是,我是在做這個2014年3月30日,它被顯示2014年4月21日,因爲這是正確的下次會議的日期。當時間到了午夜,00:00和更改爲2014年3月31日的日期,會議日期更改爲2014年5月19日!?!?!

我也有一對夫婦是做一些其他計算的代碼的其他部分的問題,但我想如果我能得到這個下來,然後我應該能夠制定出休息。

誰能告訴我在哪裏,我度過了這個軌道?

+0

點擊這裏【點擊鏈接](http://stackoverflow.com/questions/3985637/third-thursday-of-the-month-in-php) – Himanshu

回答

4
$third_monday = new DateTime('third monday of this month'); 

// if date has passed, get next month's third monday 
if ($third_monday < new DateTime()) { 
    $third_monday->modify('third monday of next month'); 
} 

echo $third_monday->format('l F d, Y'); 
0

我對PHP沒有太多的經驗,但我把它們放在一起。它已經過測試,它似乎工作。

<?php 
    date_default_timezone_set('America/New_York'); 

    $currmonth = date("n"); 
    $curryear = date("Y"); 
    $currthirdmon = date("d", strtotime("third monday", mktime(0,0,0,$currmonth,1,$curryear))); 

    if ($currthirdmon < date("d")) 
    { 
    $nextmeeting = date("l F d, Y", strtotime("third monday", mktime(0,0,0,$currmonth+1,1,$curryear))); 
    } 
    else 
    { 
    $nextmeeting = date("l F d, Y", strtotime("third monday", mktime(0,0,0,$currmonth,1,$curryear))); 
    } 

    print $nextmeeting; 
?> 
+0

你爲什麼用 「第三個星期三」? – birgire

+0

哦!對不起,我把日期寫錯了,讓我編輯 – Schickmeister

+0

發生在我們身上;-) – birgire