2016-02-28 74 views
0

我正在嘗試創建一個檢查日期範圍的函數。如果最後日期是週末,它將選擇第二天。假設,今天是2016年3月1日。如果有人加上5,它會在2016年3月7日結果。因爲3月6日是週末。我寫了這段代碼。但它不起作用,我找不到問題在哪裏。代碼如下:用於選擇下一天的功能如果最後一天是週末

<?php 
$date = "2016-02-29"; 
$numOfDays = 8; 
$futureDate = strtolower(date("l",strtotime($date." +".$numOfDays."days"))); 
$weekend1= "friday"; 
$weekend2= "saturday"; 

     if($futureDate != $$w1 || $futureDate != $w2){ 
      $finalDate = date("Y-m-d",strtotime($futureDate)); 
     } 
     else{$finalDate = date("Y-m-d",strtotime($futureDate ."+1 day"));} 

     echo $finalDate; 
?> 
+0

您是不是要找寫'$ w1'而不是$$ w1' –

+0

Yup..I意味着$ W1。檢查代碼。變量的名稱已更改。 –

+0

@MuminurRahman查看我的代碼。它根據你的代碼進一步修改它。 –

回答

1

檢查:

<?php 
$date = "2016-02-29"; 
$numOfDays = 11; 
$futureDate = strtolower(date("l",strtotime($date ."+".$numOfDays."days"))); 
$futureDate1 = strtolower(date("Y-m-d",strtotime($date ."+".$numOfDays."days"))); 
$weekend1= "friday"; 
$weekend2= "saturday"; 

if($futureDate == $weekend1){ 
     $finalDate1 = date("Y-m-d",strtotime($futureDate1 ."+2 days")); 
} 
if ($futureDate == $weekend2){ 
     $finalDate1 = date("Y-m-d",strtotime($futureDate1 ."+1 days")); 
} 

echo $finalDate1; 
?> 
+0

感謝您的評論。這工作不正常。如果當天是週末,它不會選擇第二天。 –

+0

@MuminurRahman修改了我的代碼。請檢查 –

+0

@MuminurRahman你認爲星期五和星期六是星期結束還是星期六和星期天?以上代碼會給你2016-03-13,因爲11和12是週五和週六 –

1

2016年3月6日是星期日,但你檢查星期五和星期六,您需要檢查週六和週日代替,週末。此外,您的變量名稱需要匹配,並且對於星期六,您需要添加兩天才能獲得下一個工作日。

<?php 
$date = "2016-02-29"; 
$numOfDays = 8; 
$day = 86400;//one day is 86400 seconds 
$time = strtotime($futureDate + $numOfDays * $day);//converts $futureDate to a UNIX timestamp 
$futureDate = strtolower(date("l", $time)); 
$saturday = "saturday"; 
$sunday = "sunday"; 
if($futureDate == $saturday){ 
    $finalDate = date("Y-m-d", $time + 2 * $day); 
} 
else if($futureDate == $sunday){ 
    $finalDate = date("Y-m-d", $time + $day); 
} 
else{ 
    $finalDate = date("Y-m-d", $time); 
} 
echo($finalDate); 
?> 
+0

非常感謝。它正常工作,因爲我正在努力。但問題是:當我把數字大於6時,它不起作用,並增加一天。你能解釋一下嗎? –

+1

是的,'strtotime()'函數會將日期字符串轉換爲unix時間戳(從1970年1月1日起以秒爲單位的時間量)。 'strtotime()'函數不能算術,也不知道如何解釋「+ 8天」,所以日期必須轉換爲時間戳,然後我們可以添加我們想要的時間量(以秒爲單位)未來日期。 – Andrew

+0

感謝您的寶貴意見... :) –

0

@Fakhruddin Ujjainwala 我在你的代碼已經改變,現在的工作完美。謝謝。該代碼現在如下:

<?php 
$date = "2016-02-29"; 
$numOfDays = 4; 
$futureDate = strtolower(date("l",strtotime($date ."+".$numOfDays."days"))); 
$futureDate1 = strtolower(date("Y-m-d",strtotime($date ."+".$numOfDays."days"))); 
$weekend1= "friday"; 
$weekend2= "saturday"; 

if($futureDate == $weekend1){ 
     $finalDate1 = date("Y-m-d",strtotime($futureDate1 ."+2 days")); 
} 
else if ($futureDate == $weekend2){ 
     $finalDate1 = date("Y-m-d",strtotime($futureDate1 ."+1 days")); 
} 
else{ 
    $finalDate1 = date("Y-m-d",strtotime($futureDate1)); 
} 

echo $finalDate1; 
?> 
相關問題