2014-09-24 38 views
0

我想 想要做的是從日期1添加任務每週日任何月份的31(或任何兩個隨機日期間),因此如何得到每個星期日的日期?獲取日期Mysql的

我做了什麼現在是這樣的:

for(i=start_date;i<end-date;i++){ 
    if(check i.th date == 'Sunday'){ 
     take date of i; 
    } 
} 

這裏還張貼:http://wonderphp.wordpress.com/2014/09/18/add-recurring-task-php/

但我認爲它很長的路要走這樣做。所以任何快速詭計?即使在MySQL

回答

1

這將爲

$i=date("d",strtotime("today"));//your month first sunday like "january first sunday"  
while($i<30){ 
    i+=7; 
} 

你編輯的工作:如果你想要更多的東西比這樣做

$i=date("d",strtotime("today"));//your month first sunday like "january first sunday"  
$sundays=array(); 
    while($i<30){ 
     array_push($sundays,$i); 
     //set event 
     i+=7; 
    } 

for($j=$startdate;$j<$enddate;$j++){ 
    if($j ,$sundays){ 
    //add task 
    } 
} 
+0

我認爲這將只工作,如果開始日期是星期天? – 2014-09-24 05:18:49

+0

你想在每個月的每個星期日增加任務,所以這將會反抗工作。 – StaticVariable 2014-09-24 05:20:49

0

嘗試

function getDateForSpecificDayBetweenDates($start, $end, $weekday = 0){ 
    $weekdays="Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday"; 
    $arr_weekdays=split(",", $weekdays); 
    $weekday = $arr_weekdays[$weekday]; 
    if(!$weekday) 
    die("Invalid Weekday!"); 
    $start= strtotime("+0 day", strtotime($start)); 
    $end= strtotime($end); 
    $dateArr = array(); 
    $friday = strtotime($weekday, $start); 
    while($friday <= $end) { 
    $dateArr[] = date("Y-m-d", $friday); 
    $friday = strtotime("+1 weeks", $friday); 
    } 
    $dateArr[] = date("Y-m-d", $friday); 
    return $dateArr; 
} 
$dateArr = getDateForSpecificDayBetweenDates("Today", "+1 year", 0); //0 Sun, 1 Mon, etc. 
print_r($dateArr); 

它會爲您提供所有日期兩個日期之間的星期日: -

Array ([0] => 2014-09-28 [1] => 2014-10-05 [2] => 2014-10-12 [3] => 2014-10-19 [4] => 2014-10-26 [5] => 2014-11-02 [6] => 2014-11-09 [7] => 2014-11-16 [8] => 2014-11-23 [9] => 2014-11-30 [10] => 2014-12-07 [11] => 2014-12-14 [12] => 2014-12-21 [13] => 2014-12-28 [14] => 2015-01-04 [15] => 2015-01-11 [16] => 2015-01-18 [17] => 2015-01-25 [18] => 2015-02-01 [19] => 2015-02-08 [20] => 2015-02-15 [21] => 2015-02-22 [22] => 2015-03-01 [23] => 2015-03-08 [24] => 2015-03-15 [25] => 2015-03-22 [26] => 2015-03-29 [27] => 2015-04-05 [28] => 2015-04-12 [29] => 2015-04-19 [30] => 2015-04-26 [31] => 2015-05-03 [32] => 2015-05-10 [33] => 2015-05-17 [34] => 2015-05-24 [35] => 2015-05-31 [36] => 2015-06-07 [37] => 2015-06-14 [38] => 2015-06-21 [39] => 2015-06-28 [40] => 2015-07-05 [41] => 2015-07-12 [42] => 2015-07-19 [43] => 2015-07-26 [44] => 2015-08-02 [45] => 2015-08-09 [46] => 2015-08-16 [47] => 2015-08-23 [48] => 2015-08-30 [49] => 2015-09-06 [50] => 2015-09-13 [51] => 2015-09-20 [52] => 2015-09-27) 

更多: - Find every Sunday between two dates

+0

他希望在每個星期日的日期,而不是一個月的總週日數。 – 2014-09-24 05:17:04

+0

@WilliamFrancisGomes是的,你是對的 – 2014-09-24 05:19:38

+0

等一下,如果我能找到的東西。 – 2014-09-24 05:21:17

0

這將有助於找到兩個日期間的所有星期日

$startdate='2014-05-17'; 
$enddate='2014-09-20'; 

getSundays($startdate,$enddate); 

function getSundays($startdate,$enddate) { 
    $startweek=date("W",strtotime($startdate)); 
    $endweek=date("W",strtotime($enddate)); 
    $year=date("Y",strtotime($startdate)); 

    for($i=$startweek;$i<=$endweek;$i++) { 
     $result=getWeek($i,$year); 
     if($result>$startdate&&$result<$enddate) { 
      echo "Sunday:".$result."<br>"; 
     } 
    } 
} 

function getWeek($week, $year) { 
    $dto = new DateTime(); 
    $result = $dto->setISODate($year, $week, 0)->format('Y-m-d'); 
    return $result; 
} 
+0

我想這是答案:) – 2014-09-24 05:24:07

+0

我有兩個你的問題1)是那種簡短的方法? 2)我添加了$ startdate ='2014-09-01'; $ enddate ='2014-09-30';但結果是:星期日:2014-08-31 星期日:2014-09-07 星期日:2014-09-14 星期日:2014-09-21 星期日:2014-09-28 因此出現錯誤 – 2014-09-24 05:25:00

+0

已更新..現在結果是正確的 – noufalcep 2014-09-24 05:48:08

2

試試這個one.You可以打印這個way.You日期可以取代任務echo $day爲你要。

$start_date = $_POST['start_date']; 
    $end_date = $_POST['end_date']; 

    $day = $start_date; 
    do { 
     list($day, $month, $year) = explode("-", $date); 

    $wkday = date('l',mktime('0','0','0', $month, $day, $year)); 
     if($wkday == "sunday"){ 
     echo $day; 
     } 
     $day++; 
    } while ($day < $end_date); 
1

這可能西港島線幫助您:

$start_date=strtotime("01 Sept 2014"); 
$end_date=strtotime("30 Sept 2014"); 
while(1){ 
    $start_date=strtotime('next sunday', $start_date); 
    if($start_date>$end_date) 
    break; 
    echo "Next Sunday: ".date("d M Y",$start_date)."</br>"; 

} 
+0

如果2014年9月1日是星期日,此功能跳過第一天 – 2017-11-24 07:01:00