2017-07-11 65 views
-6

輸入:17-07-2017
輸出 - 提前
這裏>>第三個星期一GET週數和天從日期

感謝是我的代碼:

$datee = "2017-07-17"; 
$timestamp = strtotime($datee); 
$day = date('l', $timestamp); 
$week = date('w', $timestamp); 
echo $day; 
echo $week; 
+0

使用'{}'工具欄按鈕,以良好的格式化代碼。清楚地表達出問題所在。你會得到什麼結果和你的期望。 – axiac

+0

當我輸入任何日期,我應該得到在一個月和一天的週數,例如,如果我鍵入17-07-2017我應該得到輸出爲第三個星期一與上述代碼我得到錯誤的答案作爲星期一和1 – pallavi

回答

1
$input = new \DateTime('2017-07-17'); 
$firstDayOfMonth = new \DateTime($input->format('Y-m-01')); 
$order = (int)(($input->format('j') - 1)/7) + 1; 

function ordinal($number) { 
    $ends = array('th','st','nd','rd','th','th','th','th','th','th'); 
    if ((($number % 100) >= 11) && (($number%100) <= 13)) 
     return $number. 'th'; 
    else 
     return $number. $ends[$number % 10]; 
} 

echo ordinal($order).' '.$input->format('l'); 

您可以用代碼在鼓搗https://3v4l.org/dg5Xa

+0

謝謝@Jiri Hrazdil代碼爲我工作。 – pallavi

+0

@pallavi:很高興聽到。請[將我的答案標記爲已接受](https://stackoverflow.com/help/accepted-answer)。 –

+0

在某些情況下,它不會給出正確的答案,例如。嘗試日期2017-08-09,其第二個星期三,但它給第三...你能幫助我嗎? – pallavi

-1

'W' 格式是一天的數字表示(星期日爲0,星期六爲6)。它不代表本月的周。爲了得到這個月的一週,你可以使用下面的函數

function week_number($date = 'today') { 
     return ceil(date('j', strtotime($date))/7); 
    } 

所以,你的代碼應該是:

$datee = "2017-07-17"; 
    $timestamp = strtotime($datee); 
    $day = date('l', $timestamp); 
    $week = week_number($datee); 
    echo $day; 
    echo $week; 

參考:Get week number in month from date in PHP?

+0

我相信OP不是要在一個月中的那一週,而是要在一個月中發生。您的代碼在2017年7月17日星期一返回4,但僅爲本月的第3個星期一... –

相關問題