请教php如何获取某一个指定时间点(时间戳)的上周周一的起始时间戳(00:00)

项目中有个需求是:
获取某一个指定时间点(时间戳)的上周周一的起始时间戳(00:00)

注意:不是当前时间点的上周,是指定时间点的上周。

多谢指点!

阅读 7.6k
6 个回答
$start_time = strtotime('monday last week', $time);
$time = '1543593600';//2018-12-01 00:00:00
echo date('Y-m-d H:i:s',strtotime ('last week',$time));//2018-11-19 00:00:00
新手上路,请多包涵

这个是需要计算一下子的
`
$time = '1544425473';//假设指定时间
$prev = strtotime(date('Y-m-d')." -1 week");
if(date('w', $prev)==0){

$mon = $prev-6*86400;

}else{

$mon = $prev-(date('w', $prev)-1)*86400;

}
var_dump($mon);//一周前周一的时间
`

对于时间的处理,建议使用 Carbon。

// 通过时间戳创建时间对象
$time = \Carbon\Carbon::createFromTimestamp(time())
    // 减去一周
    ->subWeeks(1)
    // 拨动时间到一周的起始
    ->startOfWeek(Carbon::MONDAY)
    // 转为字符串输出
    ->toDateTimeString();
dump($time);
$time = strtotime("2018-12-05 18:50:32"); //随意指定的某一个时间
echo $time, "\n"; //1544007032  
$lastWeek = date("Y-m-d H:i:s", strtotime("-1 week", $time)); //先获取指定时间的上周同一时间
echo $lastWeek, "\n"; //2018-11-28 18:50:32 

$currMonday = strtotime("Monday this week", $time);
echo $currMonday, "\n"; //1543766400

$lastMondayTime = strtotime(date("Y-m-d", $time) == date("Y-m-d", $currMonday) ? "Monday this week" : "last Monday", strtotime($lastWeek)); //然后获取指定时间上周周一的时间
echo $lastMondayTime, "\n"; //1543161600 
echo date("Y-m-d H:i:s", $lastMondayTime), "\n"; // 2018-11-26 00:00:00
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题