PHP timestamp - первый день недели - PullRequest
7 голосов
/ 23 марта 2012

Необходимо найти отметку времени для первой минуты первого дня из текущая неделя .

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

<?php

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

?>

Ответы [ 6 ]

16 голосов
/ 23 марта 2012

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

$ts = mktime(0, 0, 0, date("n"), date("j") - date("N") + 1);
7 голосов
/ 23 марта 2012

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

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

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

$ts = strtotime('Last Sunday', time());
5 голосов
/ 23 марта 2012

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

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

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

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

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

2 голосов
/ 23 марта 2012

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

Вот гибкое решение:

/**
 * Gets the timestamp of the beginning of the week.
 *
 * @param integer $time           A UNIX timestamp within the week in question;
 *                                defaults to now.
 * @param integer $firstDayOfWeek The day that you consider to be the first day
 *                                of the week, 0 (for Sunday) through 6 (for
 *                                Saturday); default: 0.
 *
 * @return integer A UNIX timestamp representing the beginning of the week.
 */
function beginningOfWeek($time=null, $firstDayOfWeek=0)
{
    if ($time === null) {
        $date = getdate();
    } else {
        $date = getdate($time);
    }

    return $date[0]
        - ($date['wday'] * 86400)
        + ($firstDayOfWeek * 86400)
        - ($date['hours'] * 3600)
        - ($date['minutes'] * 60)
        - $date['seconds'];

}//end beginningOfWeek()
0 голосов
/ 07 сентября 2015

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

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

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

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

0 голосов
/ 23 марта 2012

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

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"]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...