我有一个网络调度应用程序,我目前正在重写它,并且对如何处理定期约会有一些疑问(我知道在定期应用程序方面不乏“什么是最好的方法”)。
因此,我想提供定期约会,用户可以安排约会日期为Sat, June 2nd,并且应该每隔一周在星期六重复一些预定的时间段(如 1 年)。
哪些 php 函数可以帮助我确定“每隔一个星期六”落在哪个日期?我附上我的用户界面图片以进行澄清。
我有一个网络调度应用程序,我目前正在重写它,并且对如何处理定期约会有一些疑问(我知道在定期应用程序方面不乏“什么是最好的方法”)。
因此,我想提供定期约会,用户可以安排约会日期为Sat, June 2nd,并且应该每隔一周在星期六重复一些预定的时间段(如 1 年)。
哪些 php 函数可以帮助我确定“每隔一个星期六”落在哪个日期?我附上我的用户界面图片以进行澄清。
我个人希望使用DateTime对象并使用DateInterval类。
在上述情况下,您需要计算出第一个/下一个星期六的日期,然后使用 P2W 日期间隔
基本示例
$dow = 'saturday';
$step = 2;
$unit = 'W';
$start = new DateTime('2012-06-02');
$end = clone $start;
$start->modify($dow); // Move to first occurence
$end->add(new DateInterval('P1Y')); // Move to 1 year from start
$interval = new DateInterval("P{$step}{$unit}");
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
echo $date->format('D, d M Y'), PHP_EOL;
}
/*
Sat, 02 Jun 2012
Sat, 16 Jun 2012
Sat, 30 Jun 2012
Sat, 14 Jul 2012
…
Sat, 20 Apr 2013
Sat, 04 May 2013
Sat, 18 May 2013
Sat, 01 Jun 2013
*/
好吧,我会先设定一个开始日期;当那一天到来时,您只需:
$next_date = strtotime('+2 weeks');
这让你在同一天,但仅仅两周后。循环继续:)
您可以使用数据库列以秒为单位存储时间:
UPDATE appointments SET dtime=UNIX_TIMESTAMP() WHERE id=5
然后,您可以在特定时期刚刚到来/过去的任何地方检查此值:
mysql_query("SELECT id FROM appointments WHERE dtime>='".(strtotime("-1 week"))."');
选择的 id(s) 是 1 周或更长时间。