php - MySQL/PHP 确定一天位于哪一周以供日历使用

标签 php mysql date

我正在尝试找出执行以下操作的最佳方法:

如果用户选择某一天,例如 2010 年 6 月 21 日,我们将在每个月的第三个星期一重复一次事件,但如果他们选择 2010 年 6 月 28 日,则该事件将在每个月的最后一个星期一重复。谷歌日历就是这样做的,我正在尝试重复该功能。

所以基本上我看到它是这样工作的: 给定一个日期,获取它所在的星期和日期。 (第 1 周、第 2 周、第 3 周、第 4 周和上周。)显然,有时第 4 周将是最后一周,如果是这种情况,我想默认为上周。

所以在伪代码中:

$repeatweek = getweeknumber($date);
$repeatday = date('l', strtotime($date));


$todaysweek = getweeknumber($todaysdate);
$todayday =  date('l', strtotime($todaysdate));

if($todayday == $repeatday && $repeatweek == $todaysweek){
    echo "This is the day";
}

所以我猜的诀窍是正确定义 getweeknumber() 函数,我已经花了不少时间了。特别是确定第一周和最后一周。

最佳答案

看看 DatePeriod class .

例子:

<?php
$start = new DateTime("June 21, 2010");
$end = new DateTime("December 31, 2010");

$interval = DateInterval::createFromDateString('fourth monday of next month');
$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);

foreach ($period as $p) {
    echo $p->format("Y-m-d"), "\n";
}

给予

2010-07-26
2010-08-23
2010-09-27
2010-10-25
2010-11-22
2010-12-27

关于php - MySQL/PHP 确定一天位于哪一周以供日历使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112723/

相关文章:

Php Mysql 选择查询不起作用

PHP MySQL 获取日期之间的数据

php - MySQL 快速批量插入

mysql - 如何营造安全的本地开发环境?

r - 检查一个变量 R 中各种 DATE 的差异

javascript - 第一次更改时无法获取 Material-Ui 日期选择器日期

Mysql按相似时间、同一用户排序记录

php - 保存动态创建页面的原始 html

mysql新手——加入

php - mysql 搜索 % 和 $ 字符无结果