Php 确定选择日期的星期
我正在努力完成以下任务。我正在开发一个带有三个视图(日、周和月)的自定义日历,可能已经有了一些东西,但我也在重写它,作为我学习工具的一部分 所以当用户第一次访问时,他们将使用Day view,当然,箭头可以来回移动到第二天或前一天。如果他们点击周视图,它会给他们一个7天的概览,默认日期为今天,并且他们可以再次回到下周或前一周。最后一个视图是完整的月历,一旦他们单击该天,它将为他们提供该天的详细信息,同时将默认值重置为他们选择的日期。因此,如果他们返回到周视图,他们将看到周的详细信息,包括他们选择的日期。这就是我难以理解的地方,我知道有一些PHP函数可以确定一周中的哪一天,但我似乎无法考虑如何传递日期,以及如何从周日开始计算一周中传递的日期。例如,如果我在2012年12月10日通过考试,我想在2012年7月10日至12月13日这一周开始 衷心感谢您的帮助或指出正确的方向。请原谅我的语法/拼写错误。使用Php 确定选择日期的星期,php,Php,我正在努力完成以下任务。我正在开发一个带有三个视图(日、周和月)的自定义日历,可能已经有了一些东西,但我也在重写它,作为我学习工具的一部分 所以当用户第一次访问时,他们将使用Day view,当然,箭头可以来回移动到第二天或前一天。如果他们点击周视图,它会给他们一个7天的概览,默认日期为今天,并且他们可以再次回到下周或前一周。最后一个视图是完整的月历,一旦他们单击该天,它将为他们提供该天的详细信息,同时将默认值重置为他们选择的日期。因此,如果他们返回到周视图,他们将看到周的详细信息,包括他们选择
strotime()
函数和date()
函数执行此任务
例如,2012年10月9日前一天
echo date('Y-m-d', strtotime("2012-10-09 -1 day"));
根据智慧的答案,你可以通过几个步骤找到一周的第一天。查看以获得更多选项,但我相信以下代码将起作用:
// figure out how many days back you have to go, to get to Sunday
$d = date('N', strtotime($mydate));
// figure out Sunday's date
$beginning_of_week = date('Y-m-d', strtotime($mydate." -{$d} days"));
$end_of_week = date('Y-m-d', strtotime($beginning_of_week." +1 week"));
echo "The week {$beginning_of_week} to {$end_of_week}! ";
$selection
将用户选择的日期表示为
整数时间戳,date('N',$selection)
将返回一个数字
代表他们选择的一周中的某一天(例如星期一=
1至周日=7)
此结果还表示自启动后的天数
所选星期(前一个星期日)$offset。当然,如果
您将从所选用户的字符串表示形式开始
日期(如您的问题,2012年12月10日),您首先需要
将日期转换为整数时间戳
$selection = strtotime($selection); //if $selection is in string format
$offset = date('N', $selection);
$offset
来确定开始日期
星期(前一个星期日)$weekstart
$weekstart = strtotime("$selection -$offset day");
$weekend
)当然是6天后,但要计算这个
日期,您首先需要将$weekstart
从整数转换为整数
将时间戳转换为日期的字符串表示形式。您还需要将结果($weekend
)转换为日期的字符串表示形式
$weekstart = stringftime("%m/%d/%Y", $weekstart); //date format = 10/07/2012
$weekend = strtotime("$weekstart +6 day");
$weekend = stringftime("%m/%d/%Y", $weekend);
因此,以下是:
$selection = "10/12/2012";
$selection = strtotime($selection);
$offset = date('N', $selection);
$weekstart = strtotime("$selection -$offset day");
$weekstart = stringftime("%m/%d/%Y", $weekstart);
$weekend = strtotime("$weekstart +6 day");
$weekend = stringftime("%m/%d/%Y", $weekend);
$output = "Selected Date = $selection \n Selected Week = $weekstart - $weekend";
echo $output;
结果:
Selected Date = 10/12/2012
Selected Week = 10/07/2012 - 10/13/2020
见:
尝试此功能(来源:) 您感兴趣的日期是
$date
(YYYY-MM-DD格式)和$rollover
全天格式(例如星期五)
函数getWeeks($date,$rollover)
{
$cut=substr($date,0,8);
$daylen=86400;
$timestamp=strottime($date);
$first=strottime($cut.00”);
$passed=($timestamp-$first)/$daylen;
$i=1;
$weeks=1;
对于($i;$idate('N'))给你一周的时间,例如星期二= 2。星期日星期六范围覆盖的那一天将是CurdieT2-> CurDe+4-谢谢贾景晖,这是我需要的。你应该考虑在JavaScript框架中像JQuery那样对服务器进行Ajax调用,或者像Paple提供的PHP包。这会使你的生活变得简单多了,B。相信我,你仍然会学到很多。谢谢你,托弗,当解决方案完全如你所解释的那样清晰时,我往往会过度复杂我的思维过程。
function getWeeks($date, $rollover)
{
$cut = substr($date, 0, 8);
$daylen = 86400;
$timestamp = strtotime($date);
$first = strtotime($cut . "00");
$elapsed = ($timestamp - $first) / $daylen;
$i = 1;
$weeks = 1;
for($i; $i<=$elapsed; $i++)
{
$dayfind = $cut . (strlen($i) < 2 ? '0' . $i : $i);
$daytimestamp = strtotime($dayfind);
$day = strtolower(date("l", $daytimestamp));
if($day == strtolower($rollover)) $weeks ++;
}
return $weeks;
}