如何在php中获取上周的日期(星期二或其他日期)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在php中获取上周的日期(星期二或其他日期)?相关的知识,希望对你有一定的参考价值。

我认为这是可能的,但我无法提出正确的算法。

我想做的是:

如果今天是2009年2月2日,我怎么知道上周的星期二?使用两天后的相同代码,我会找到上周二的同一日期,而当前日期是2009年2月4日,星期三。

答案

我知道已经有一个可接受的答案,但是恕我直言,它不满足所要求的第二个要求。在上述情况下,如果在星期三使用strtotime,它将在昨天产生收益。因此,准确地说,您仍然需要检查以下内容:

$tuesday = strtotime('last Tuesday');
// check if we need to go back in time one more week
$tuesday = date('W', $tuesday)==date('W') ? $tuesday-7*86400 : $tuesday;

正如davil在他的评论中指出的,这是我的快速镜头。由于夏令时,上述计算每年将关闭一次。足够好的解决方案是:

$tuesday = date('W', $tuesday)==date('W') ? $tuesday-7*86400+7200 : $tuesday;

如果您需要时间为0:00h,则当然需要额外的精力。

另一答案

这些答案中的大多数要么太多,要么在技术上不正确,因为“上星期二”并不一定表示上周的星期二,而仅表示上一个星期二,可能在“现在”的同一周内。

正确的答案是:

strtotime('tuesday last week')
另一答案

php实际上使这变得非常容易:

echo strtotime('last Tuesday');

请参阅strtotime文档。

另一答案

有效的解决方案:

strtotime
另一答案

您忘记了strtotime作为date('W',$ tuesday)的第二个参数嗯。

将$ tuesday转换为“ $ tuesday-7 * 86400 + 7200”之前的时间戳

mde。

另一答案
$z = date("Y-m-d", strtotime("last Saturday"));
$z = (date('W', strtotime($z)) == date('W')) ? (strtotime($z)-7*86400+7200) : strtotime($z);
print date("Y-m-d", $z);
另一答案
// test: find last date for each day of the week
foreach (array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun') as $day) {
    print $day . " => " . date('m/d/Y', last_dayofweek($day)) . "
";
}

function last_dayofweek($day)
{
    // return timestamp of last Monday...Friday
    // will return today if today is the requested weekday
    $day = strtolower(substr($day, 0, 3));
    if (strtolower(date('D')) == $day)
        return strtotime("today");
    else
        return strtotime("last {$day}");
}
另一答案

不使用手动计算,请改用DateTime对象。它具有适当的实现,并考虑了leap年,yap秒等。

<?php 
    $currentDay = date('D');
    echo "Today-".$today = date("Y-m-d");
    echo "Yesterday-".$yesterday = date("Y-m-d",strtotime('yesterday'));
    echo "Same day last week-".$same_day_last_week = date("Y-m-d",strtotime('last '.$currentDay));
?>

[modify方法修改相对于日期状态的日期,因此,如果将日期设置为其他日期,它将计算相对于日期的日期。

$today = new DateTime();
$today->modify('tuesday last week');

以上是关于如何在php中获取上周的日期(星期二或其他日期)?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取上周日到周六的日期

在 PHP 中获取上周日的日期

如何获取特定月份的每个星期四或一周中的其他日期的日期?

PHP封装函数,获取周日期

如何查找上周日的日期并将其保存在Windows批处理文件的变量中

获取上周一 - 周日的日期:有更好的方法吗?