Heim  >  Artikel  >  Backend-Entwicklung  >  php strtotime 如何获取上周一的时间呢?-1 monday不对

php strtotime 如何获取上周一的时间呢?-1 monday不对

WBOY
WBOYOriginal
2016-10-17 09:30:102293Durchsuche

-1 monday输出是这周一的时间,很奇怪

回复内容:

-1 monday输出是这周一的时间,很奇怪

因为老外认为“this monday”是下周一,“last monday”是本周一
直接"-2 monday"就好了,或者"monday last week"

date('Y-m-d', strtotime('-' . (6+date('w')) . ' days'));

-7 days

last week

通常分两步走,先取得上周的任意一天,再去找周一,就像求月末是找到下个月的1号,然后-1 day一样。

这个还是写一个通用的方法吧

<code>function last_monday($timestamp=0,$is_return_timestamp=true){ 
    static $cache ; 
    $id = $timestamp.$is_return_timestamp; 
    if(!isset($cache[$id])){ 
        if(!$timestamp) $timestamp = time(); 
        $thismonday = this_monday($timestamp) - /*7*86400*/604800; 
        if($is_return_timestamp){ 
            $cache[$id] = $thismonday; 
        }else{ 
            $cache[$id] = date('Y-m-d',$thismonday); 
        } 
    } 
    return $cache[$id]; 
}</code>

date('w')得到当前周几,由于周一至周六分别是1-6,周日是0。当值为0的时候,上周一是13天前。其余就是date('w')+6天前。

<code>$days = date('w')==0?13:date('w')+6;

echo date('Y-m-d',time()-$days*86400);</code>

这里看到了文档链接描述

echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."
";

$time = strtotime("-7 day");

$timetest =date("Y-m-d h:i:sa", $time);

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn