【发布时间】:2011-02-26 20:24:36
【问题描述】:
我需要找到本周的星期一的日期。如何在 PHP 4 中做到这一点?
【问题讨论】:
-
我真的觉得你必须在 PHP4 中工作,因为 PHP5 的日期功能waaaay 更好。此外,PHP4 已经正式报废了一段时间,所以它不会再获得任何补丁,而且它可能是不安全的——它不应该再用于生产了。
我需要找到本周的星期一的日期。如何在 PHP 4 中做到这一点?
【问题讨论】:
最简单的方法:
$time = strtotime('monday this week');
【讨论】:
strotime 应该是 strtotime。
试试这个:
return strtotime('last monday', strtotime('next sunday'));
【讨论】:
mktime(0,0,0,date('m'),date('j')-date('N')+1,date('Y'))
echo date('Y-m-d',time()+( 1 - date('w'))*24*3600);
下周:
echo date('Y-m-d',time()+( 8 - date('w'))*24*3600);
1 代表星期一,2 代表星期二,3 代表星期三,以此类推。试一试。
【讨论】:
dhtmlxSchedule,今天是星期天,前一个星期一的数据消失了,实际上是整个星期!有什么建议吗?
echo date('Y-m-d', strtotime('previous monday'));
不过,只有一个音符。你要确保今天不是星期一,否则你会得到上一个星期一的日期,就像它说的那样。你可以这样做
if (date('w') == 1)
{
// today is monday
}
else
{
// find last monday
}
【讨论】:
$thisMonday = date('l, F d, Y', time() - ((date('w')-1) * 86400) );
编辑:解释
date('w') 是星期几的数字表示(0=星期日,6=星期六)所以,如果现在是星期三(第 3 天),星期一是两天前:
time() - (86400 * (3 - 1)) = time() - 86400 * 2
如果是星期一(第 1 天),我们得到:
time() - (86400 * (1 - 1)) = time() - 86400 * 0 = time()
如果是星期天(第 0 天),星期一就是明天。
time() - (86400 * (0 - 1)) = time() - -86400 = time() + 86400
【讨论】:
试试这个。
echo date('Y-m-d', strtotime('last monday', strtotime('next monday')));
如果今天是星期一,它将返回当前日期,否则返回上星期一。至少在 en_US 语言环境下的 PHP 5.2.4 上是这样。
【讨论】:
试试这个
$day_of_week = date("N") - 1;
$monday_time = strtotime("-$day_of_week days");
【讨论】:
我的尝试:
<?php
$weekday = date("w") - 1;
if ($weekday < 0)
{
$weekday += 7;
}
echo "Monday this week : ", date("Y-m-d",time() - $weekday * 86400) , "\n";
?>
【讨论】: