PHP timestamp-первый день недели

нужно найти метка на в первую минуту на первый день на текущая неделя.

каков наилучший способ сделать это?

<?php

$ts = mktime(); // this is current timestamp

?>

6 ответов


Если понедельник-ваш первый день:

$ts = mktime(0, 0, 0, date("n"), date("j") - date("N") + 1);

Если вы думаете, что понедельник-первый день текущей недели...

$ts = strtotime('Last Monday', time());

Если вы думаете, что воскресенье-это первый день текущей недели...

$ts = strtotime('Last Sunday', time());

Если это понедельник, который вы ищете:

$monday = new DateTime('this monday');
echo $monday->format('Y/m/d');

Если это воскресенье:

new DateTime('this sunday'); // or 'last sunday'

для получения дополнительной информации об этих относительных форматов, посмотри здесь "PHP: относительные форматы"


прежде всего, функции даты/времени в PHP очень медленные. Поэтому я стараюсь звонить им как можно реже. Вы можете сделать это с помощью getdate()


Я использую следующий фрагмент кода:

public static function getTimesWeek($timestamp) {

  $infos = getdate($timestamp);
  $infos["wday"] -= 1;
  if($infos["wday"] == -1) {
    $infos["wday"] = 6;
  }

  return mktime(0, 0, 0, $infos["mon"], $infos["mday"] - $infos["wday"], $infos["year"]);
}

используйте это, чтобы получить метку времени, какой день недели вы хотите, вместо "суббота" напишите первый день недели:

strtotime('Last Saturday',mktime(0,0,0, date('m'), date('d')+1, date('y')))

например: в приведенном выше коде вы получаете метку в прошлую субботу, а суббота на этой неделе.

обратите внимание, что если будний день сейчас суббота, это вернет отметку времени сегодня.