【问题标题】:getting the numeric value of "this Monday" - php获取“这个星期一”的数值 - php
【发布时间】: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
  • 真的,从这个角度来看。但我说的是程序员的观点,其中“这个星期一或这个星期天”严格指本周

标签: php date


【解决方案1】:
strtotime("Monday this week");

来自the manual

reltext space 'week' |处理特殊格式“weekday + last/this/next week”。 | “下周一”

【讨论】:

  • @AdrianTanase:你希望得到什么(哪个日期),什么时候你会在日期2014-11-23 打电话给Monday this week
  • @Glavić 有一个观点:密切关注examine this page 以避免令人讨厌的意外。
【解决方案2】:

尝试使用“上周一”和“下周一”关键字。

例如:

echo date("d", strtotime("last Monday"));

另一个例子...

echo date("d", strtotime("next Monday"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多