【问题标题】:How to repeat event for every 2 weeks on multi selection days up to 3 Occurrence's如何在最多 3 次的多选日每 2 周重复一次事件
【发布时间】:2022-01-21 07:21:06
【问题描述】:

我正在使用 angularjs/php 开发一种谷歌日历类型的重复功能。

尝试在多选日期每 2 周重复一次该事件,该事件将从开始日期起重复最多 3 次。 PFA 我的代码。

$scope.daysarr = [{dayname: "SUN",Name: 'Sunday', Selected: true},
{dayname: "MON",Name: 'Monday', Selected: false},
{dayname: "TUE",Name: 'Tuesday', Selected: true},
{dayname: "WED",Name: 'Wednesday', Selected: false},
{dayname: "THU",Name: 'Thursday', Selected: true},
{dayname: "FRI",Name: 'Friday', Selected: false},
{dayname: "SAT",Name: 'Saturday', Selected: false}];

for ($i=1; $i<=$after_occurance ; $i++) { // 3times
if($i==1)
{
    $datesArr[] = $date->format('Y-m-d');
}
else
{
    echo $dayOfWeek = $date->format('l');
    if ($dayOfWeek == 'Sunday' && $daysarr[0]->selected==1) { // i want to loop sun,tue,thu
        $date->modify("+{$repeatnum} weeks");   // 2 weeks
            $datesArr[] = $date->format('Y-m-d');
    }
    if ($dayOfWeek == 'Tuesday' && $daysarr[2]->selected==1) { // i want to loop sun,tue,thu
        $date->modify("+{$repeatnum} weeks");   // 2 weeks
            $datesArr[] = $date->format('Y-m-d');
    }
    if ($dayOfWeek == 'Thursday' && $daysarr[4]->selected==1) { // i want to loop sun,tue,thu
        $date->modify("+{$repeatnum} weeks");   // 2 weeks
            $datesArr[] = $date->format('Y-m-d');
    }
            
}}

仅重复输出选定的开始日期而不是选定的日期

预期输出:

周日:2022 年 1 月 9 日、2022 年 1 月 23 日、2022 年 2 月 6 日

周二:2022 年 1 月 4 日、2022 年 1 月 18 日、2022 年 2 月 1 日

周四:2022 年 1 月 6 日、2022 年 1 月 20 日、2022 年 2 月 3 日

【问题讨论】:

  • 这是学校作业吗?因为这个问题是另一个用户发布的前一个问题的精确复制品

标签: javascript php angularjs postgresql


【解决方案1】:

我会使用基于提供的 startDate 转换为 EPOCH 的秒数:

<?php
   // convert startDate input to epoch time
   $startDate = strtotime($_POST['startDate']);

   // how many seconds does 2 weeks contain?
   $interval = 2 * 7 * 24 * 60 * 60;

   // calculate and display the startDate, followed by its next ocurrences
   for ($i=0; $i<$after_occurance; $i++) { // 3times
      if ($i == 0) {
         // output the first date with the Day name
         echo date("D, d-m-Y", ($startDate + ($i * $interval)));
      } else {
         // all other dates won't display the day name
         echo date("d-m-Y", ($startDate + ($i * $interval)));
      }
      // if not last, add a comma and a space to the output
      if ($i < $after_occurance-1) { 
          echo ', ';
      } else {
          echo '<br/>';
      }
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2018-11-07
    • 1970-01-01
    • 2016-01-13
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多