【发布时间】:2014-11-25 14:04:21
【问题描述】:
我正在尝试显示本周的数值,
在我正在开发的网站上的类似日历的功能中。
所以,我最终想出的功能是……
echo date("d", strtotime("this Tuesday"));
大部分时间一切顺利, 除了,例如今天是 25 号星期二,所有星期日期都显示良好 自周二至周日(25 - 30), 但是对于星期一,它会说 01,因为我认为它认为“这个星期一”是 12 月的 01,而不是昨天。这个星期一通常应该是本周的星期一,昨天(24),但是你申请“这个星期一”时的功能会显示下星期一,因为今天已经是星期二,昨天不在范围内?
但这很奇怪,因为我指的是本周的星期一“这个星期一”。它显示下周一。这是日期函数中的错误吗?
否则,我如何安全地获取星期几的值?
谢谢!
【问题讨论】:
-
即使在普通话中,“this”也是相当模棱两可的。我永远不会依赖
strtotime的自动关键字识别来处理此类事情,而是“手动”进行所需的一点时间数学运算。例如。date('w')找出星期几,然后从那里开始...... -
我用“上周一”(昨天)进行了测试,它显示 24,今天是 25,所以一切都很好。但这意味着如果星期一已经过去并且今天是星期二,那么日期实际上是在下星期一处理这个星期一。这是蹩脚的,因为它应该被视为函数的方式纯粹是一周中当前日期的数值,作为一个整体范围。
-
deceze,是的,但是由于我们在 PHP 中有这么多关于日期的函数,它们应该可以工作。我认为这个星期一不应该模棱两可。这个周一绝对不是下周一,上周一也不应该是昨天,因为今天是周二。这个星期一过去了,但仍然是这个星期一。
-
让我们在这个星期一见面喝杯咖啡讨论一下。 - 那么,我们应该在昨天见面吗? :P
-
真的,从这个角度来看。但我说的是程序员的观点,其中“这个星期一或这个星期天”严格指本周