求教PHP有没有求某一个指定日期的下一个星期的星期一是几号的函数

Undeadway 2011-07-30 02:34:09
业务上有这样的要求,需要按周对批量数据进行统计,开始的和结束的时期由用户自己输入,比如输入2011-07-30开始,2011-12-31结束。
但问题在于开始的日子并不一定是一周的开始(周一),所以统计的第一周是不完整的一个星期,所以需要求开始日的下一个星期一,然后开始完整周的统计,直到最后一周结束。

比如这样:next_monday('2011-07-30');
返回2011-08-01

next_monday('2011-08-01');
返回2011-08-08


next_monday('2011-11-15');
返回2011-11-20

参数和返回值的形式可以是比如字符串,数组,UNIX时间戳,时间对象,等任意合法形式,只要我能最终取得到(直接或间接都无所谓)“2011-08-01”这个日期就可以了

初学PHP,看了PHP的手册,似乎里面没有提及类似的功能,不知道是否有类似的代码可以使用。
还望不吝赐教。
...全文
317 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mimixikou 2011-10-24
  • 打赏
  • 举报
回复
自己写。。。。。。
hqaht 2011-08-16
  • 打赏
  • 举报
回复

function getMonday($d){
if (date('D',strtotime($d))=='Mon'){
return date('Y-m-d',strtotime($d));
}else {
return date('Y-m-d' , strtotime('next monday' , strtotime($d)));
}
}

echo getMonday('2011-08-02');
skyaspnet 2011-07-30
  • 打赏
  • 举报
回复
strtotime
(PHP 4, PHP 5)

strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳

说明
int strtotime ( string $time [, int $now ] )
本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间。

本函数将使用 TZ 环境变量(如果有的话)来计算时间戳。自 PHP 5.1.0 起有更容易的方法来定义时区用于所有的日期/时间函数。此过程在 date_default_timezone_get() 函数页面中有说明。

Note:

如果给定的年份是两位数字的格式,则其值 0-69 表示 2000-2069,70-100 表示 1970-2000。


参数

time
被解析的字符串,格式根据 GNU » 日期输入格式的语法。在 PHP 5.0 之前,time 中不允许有毫秒数,自 PHP 5.0 起可以有但是会被忽略掉。

now
用来计算返回值的时间戳。


返回值
成功则返回时间戳,否则返回 FALSE。在 PHP 5.1.0 之前本函数在失败时返回 -1。

更新日志
版本 说明
5.1.0 失败时返回 FALSE,不再是 -1。


范例

Example #1 strtotime() 例子

<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>


Example #2 失败检查

<?php
$str = 'Not Good';

// previous to PHP 5.1.0 you would compare with -1, instead of false
if (($timestamp = strtotime($str)) === false) {
echo "The string ($str) is bogus";
} else {
echo "$str == " . date('l dS of F Y h:i:s A', $timestamp);
}
?>
boborabit 2011-07-30
  • 打赏
  • 举报
回复
echo date('Y-m-d' , strtotime('next monday' , strtotime('2011-08-01')));

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧