php первый день недели

Получить первый день недели в PHP?

ОТВЕТЫ

Ответ 1

Вот что я использую.

$day содержит число от 0 до 6, представляющее день недели (воскресенье = 0, понедельник = 1 и т.д.).
$week_start содержит дату воскресенья текущей недели как mm-dd-yyyy.
$week_end содержит дату субботы текущей недели как mm-dd-yyyy.

Ответ 2

Заменить время(). Следующие воскресные/последние понедельные методы не будут работать, если текущий день воскресен/понедельник.

Ответ 3

Очень просто использовать strtotime function:

Он отличается немного через версии PHP:

Сравнение в Edge-Cases

Относительные описания, подобные этой неделе, имеют свой собственный контекст. Ниже показаны выходные данные на эту неделю понедельника и воскресенья, когда они находятся в понедельник или воскресенье:

Againt немного отличается через версии PHP:

Ответ 4

Держите его простым:

Ответ 5

Это дает вам день недели самой даты, где 0 = воскресенье и 6 = суббота. Оттуда вы можете просто рассчитать назад до того дня, когда захотите.

Ответ 6

Это будет охватывать границы года и високосные годы.

Ответ 7

РЕДАКТИРОВАТЬ: приведенная ниже ссылка больше не работает на указанной версии PHP. Он работает на PHP 5.6, что повышает надежность strtotime, но не идеален! Результаты в таблице являются живыми результатами из PHP 5.6.

Для чего это стоит, вот разбивка шаткого поведения strtotime при определении последовательной системы отсчета:

В основном только эти строки будут надежно давать вам одинаковую дату, независимо от того, в какой день недели вы находитесь в данный момент, когда звоните им:

Ответ 8

Следующий код должен работать с любой пользовательской датой, просто использует нужный формат даты.

Я проверил код с PHP 5.2.17 Результаты:

Ответ 9

Ответ 10

Ответ 11

Здесь я рассматриваю воскресенье как первую и субботу как последний день недели.

Начало: 05-08-2012
Конец: 11-08-2012

Ответ 12

Ответ 13

Ответ 14

Просто используйте date($format, strtotime($date,’ LAST SUNDAY + 1 DAY’));

Ответ 15

Ответ 16

Это кратчайшее и наиболее читаемое решение, которое я нашел:

Ответ 17

Ответ 18

Ответ 19

Сначала вы должны получить следующий понедельник, затем получить «последний понедельник» следующего понедельника. Поэтому, если данная дата понедельника, она вернется с той же датой не в последнюю неделю понедельника.

Ответ 20

Если вы хотите, чтобы понедельник начинался с вашей недели, сделайте следующее:

Ответ 21

Эта функция будет генерировать все дни с понедельника по пятницу включительно (удобна для создания рабочих дней недели):

Интересно только в понедельник, как спросил ОП?

Ответ 22

Вы анализируете дату, используя strptime() и используйте date() на результат:

Ответ 23

Ответ 24

Другой способ сделать это.

Ответ 25

Самый простой способ получить первый день (понедельник) текущей недели:

Этот код получит следующий понедельник и уменьшит его на 1 неделю. Этот код будет работать в любой день недели. Даже если сегодня понедельник.

Ответ 26

Я нашел это довольно расстраивающим, учитывая, что мой часовой пояс австралийский и что strtotime() ненавидит даты в Великобритании.

Чтобы преодолеть это:

Предостережение. Это относится только к датам Австралии/Великобритании.

Ответ 27

Ответ 28

Я несколько раз выступал против этого вопроса и всегда удивлял, что функции даты не делают это проще или понятнее. Здесь мое решение для PHP5, которое использует класс DateTime :

Необходимо клонировать, чтобы не изменять исходную дату.

Ответ 29

Это не лучший способ, но я тестировал, и если я на этой неделе, я получу правильный понедельник, и если я нахожусь в понедельник, я получу это в понедельник.

Ответ 30

Источник

Php первый день недели

(PHP 4, PHP 5, PHP 7, PHP 8)

date — Форматирует вывод системной даты/времени

Описание

Список параметров

Возвращаемые значения

Ошибки

Список изменений

ВерсияОписание
8.0.0timestamp теперь допускает значение null.

Примеры

Пример #1 Примеры использования функции date()

// установка часового пояса по умолчанию.
date_default_timezone_set ( ‘UTC’ );

// выведет примерно следующее: Monday
echo date ( «l» );

// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo date ( ‘l jS \of F Y h:i:s A’ );

/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Mon, 15 Aug 2005 15:12:46 UTC
echo date ( DATE_RFC822 );

Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.

Пример #2 Экранирование символов в функции date()

Пример #3 Пример совместного использования функций date() и mktime()

Данный способ более надёжен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.

Пример #4 Форматирование с использованием date()

// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся в часовом поясе Mountain Standard Time (MST)

$today = date ( «F j, Y, g:i a» ); // March 10, 2001, 5:16 pm
$today = date ( «m.d.y» ); // 03.10.01
$today = date ( «j, n, Y» ); // 10, 3, 2001
$today = date ( «Ymd» ); // 20010310
$today = date ( ‘h-i-s, j-m-y, it is w Day’ ); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date ( ‘\i\t \i\s \t\h\e jS \d\a\y.’ ); // it is the 10th day.
$today = date ( «D M j G:i:s T Y» ); // Sat Mar 10 17:16:18 MST 2001
$today = date ( ‘H:m:s \m \i\s\ \m\o\n\t\h’ ); // 17:03:18 m is month
$today = date ( «H:i:s» ); // 17:16:18
$today = date ( «Y-m-d H:i:s» ); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>

Примечания

Смотрите также

User Contributed Notes 20 notes

Things to be aware of when using week numbers with years.

Conclusion:
if using ‘W’ for the week number use ‘o’ for the year.

In order to define leap year you must considre not only that year can be divide by 4!

The correct alghoritm is:

if (year is not divisible by 4) then (it is a common year)
else if (year is not divisible by 100) then (it is a leap year)
else if (year is not divisible by 400) then (it is a common year)
else (it is a leap year)

So the code should look like this:

For Microseconds, we can get by following:

echo date(‘Ymd His’.substr((string)microtime(), 1, 8).’ e’);

FYI: there’s a list of constants with predefined formats on the DateTime object, for example instead of outputting ISO 8601 dates with:

echo date ( ‘Y-m-d\TH:i:sO’ );
?>

You can use

echo date ( DateTime :: ISO8601 );
?>

instead, which is much easier to read.

this how you make an HTML5 tag correctly

It’s common for us to overthink the complexity of date/time calculations and underthink the power and flexibility of PHP’s built-in functions. Consider http://php.net/manual/en/function.date.php#108613

date() will format a time-zone agnostic timestamp according to the default timezone set with date_default_timezone_set(. ). Local time. If you want to output as UTC time use:

$tz = date_default_timezone_get ();
date_default_timezone_set ( ‘UTC’ );

For HTML5 datetime-local HTML input controls (http://www.w3.org/TR/html-markup/input.datetime-local.html) use format example: 1996-12-19T16:39:57

To generate this, escape the ‘T’, as shown below:

If timestamp is a string, date converts it to an integer in a possibly unexpected way:

The example below formats today’s date in three different ways:

The following function will return the date (on the Gregorian calendar) for Orthodox Easter (Pascha). Note that incorrect results will be returned for years less than 1601 or greater than 2399. This is because the Julian calendar (from which the Easter date is calculated) deviates from the Gregorian by one day for each century-year that is NOT a leap-year, i.e. the century is divisible by 4 but not by 10. (In the old Julian reckoning, EVERY 4th year was a leap-year.)

This algorithm was first proposed by the mathematician/physicist Gauss. Its complexity derives from the fact that the calculation is based on a combination of solar and lunar calendars.

At least in PHP 5.5.38 date(‘j.n.Y’, 2222222222) gives a result of 2.6.2040.

So date is not longer limited to the minimum and maximum values for a 32-bit signed integer as timestamp.

Prior to PHP 5.6.23, Relative Formats for the start of the week aligned with PHP’s (0=Sunday,6=Saturday). Since 5.6.23, Relative Formats for the start of the week align with ISO-8601 (1=Monday,7=Sunday). (http://php.net/manual/en/datetime.formats.relative.php)

This can produce different, and seemingly incorrect, results depending on your PHP version and your choice of ‘w’ or ‘N’ for the Numeric representation of the day of the week:

Prior to PHP 5.6.23, this results in:

Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 10 Oct 2016
Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 10 Oct 2016

Since PHP 5.6.23, this results in:

Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 03 Oct 2016
Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 03 Oct 2016

I’ve tested it pretty strenuously but date arithmetic is complicated and there’s always the possibility I missed something, so please feel free to check my math.

The function could certainly be made much more powerful, to allow you to set different days to be ignored (e.g. «skip all Fridays and Saturdays but include Sundays») or to set up dates that should always be skipped (e.g. «skip July 4th in any year, skip the first Monday in September in any year»). But that’s a project for another time.

$start = strtotime ( «1 January 2010» );
$end = strtotime ( «13 December 2010» );

// Add as many holidays as desired.
$holidays = array();
$holidays [] = «4 July 2010» ; // Falls on a Sunday; doesn’t affect count
$holidays [] = «6 September 2010» ; // Falls on a Monday; reduces count by one

?>

Or, if you just want to know how many work days there are in any given year, here’s a quick function for that one:

Источник

Работа с датами в PHP

Учебник PHP

Практика

Важное

Регулярки

Работа с htaccess

Файлы, папки

Сессии и куки

Работа с БД

Практика по работе с БД в PHP

Перед чтением см. новые уроки раздела «Важное», которые появились выше.

Практика

Движок PHP

Продвинутые БД

Аутентификация

Практика

ООП и MVC

Абстрактные классы и интерфейсы

Трейты

ООП Магия

Практика

Практика: классы как набор методов

Для работы с датами в PHP применяются различные функции. Мы начнем изучение с функции time.

Функция time, формат timestamp

Функция time возвращает разницу в секундах между 1-го января 1970 года и текущим моментом времени. Такое представление даты называется форматом timestamp.

Зачем нужен timestamp?

Время в формате timestamp используется для того, чтобы найти разницу между датами в секундах.

С помощью функции time мы можем получить только текущий момент времени. Чтобы получить timestamp за любую дату следует использовать функцию mktime:

Функция mktime

Функция mktime работает аналогично функции time, но, в отличие от нее, принимает параметры: mktime(час, минута, секунда, месяц, день, год) (обратите внимание на то, что месяц и день переставлены местами ). Посмотрите примеры работы:

Полученная разница в секундах будет выглядеть так: 682661934 (обновите страницу и это число поменяется).

Вооружившись знаниями о том, что такое формат timestamp (он нам еще понадобится в дальнейшем), изучим более полезные функции для работы с датами, например, функцию date.

Функция date

Функция date выводит текущие дату и время в заданном формате.

Формат задается управляющими командами (английскими буквами), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).

Примеры работы с date:

Второй параметр функции date

Функция date имеет второй необязательный параметр, который принимает момент времени в формате timestamp. Если передать этот параметр, то функция date отформатирует не текущий момент времени, а тот, который передан вторым параметром. Этот timestamp можно получить, к примеру, через mktime (но не обязательно):

Функция strtotime

Следующая полезная функция, которую мы разберем, называется strtotime.

К примеру, я могу передать ей строку ‘2025-12-31’ и функция сама разберет, где тут год, где месяц, а где день, и вернет эту дату в формате timestamp.

Все форматы можно посмотреть тут.

Следующий код вернет дату предыдущего понедельника:

Как добавить или отнять дату

Пример 1

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 1 день и выведем в формате ‘день.месяц.год’

Результат выполнения кода:

Пример 2

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и выведем в формате ‘день.месяц.год’

Результат выполнения кода:

Пример 3

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и 1 месяц и выведем в формате ‘день.месяц.год’

Результат выполнения кода:

Пример 4

Давайте создадим объект с датой за 2025 год, 1 месяц, 1 день, затем отнимем от нее 1 день и выведем в формате ‘день.месяц.год’

Результат выполнения кода:

Что вам делать дальше:

Приступайте к решению задач по следующей ссылке: задачи к уроку.

Источник

Получить первый день недели в PHP?

Вот что я использую…

$day содержит число от 0 до 6, представляющее день недели (воскресенье = 0, понедельник = 1 и т.д.).
$week_start содержит дату воскресенья текущей недели как mm-dd-yyyy.
$week_end содержит дату субботы текущей недели как mm-dd-yyyy.

Заменить время(). Следующие воскресные/последние понедельные методы не будут работать, если текущий день воскресен/понедельник.

Очень просто использовать strtotime function:

Он отличается немного через версии PHP:

Выход для 5.3.0 – 5.6.6, php7 @20140507 – 20150301, hhvm-3.3.1 – 3.5.1

Выход для 4.3.5 – 5.2.17

Выход для 4.3.0 – 4.3.4

Сравнение в Edge-Cases

Относительные описания, подобные этой неделе, имеют свой собственный контекст. Ниже показаны выходные данные на эту неделю понедельника и воскресенья, когда они находятся в понедельник или воскресенье:

Againt немного отличается через версии PHP:

Выход для 5.3.0 – 5.6.6, php7 @20140507 – 20150301, hhvm-3.3.1 – 3.5.1

Выход для 4.3.5 – 5.0.5, 5.2.0 – 5.2.17

Выход для 5.1.0 – 5.1.6

Выход для 4.3.0 – 4.3.4

Держите его простым:

Это дает вам день недели самой даты, где 0 = воскресенье и 6 = суббота. Оттуда вы можете просто рассчитать назад до того дня, когда захотите.

Этот вопрос нуждается в хорошем ответе DateTime: –

Это будет охватывать границы года и високосные годы.

РЕДАКТИРОВАТЬ: приведенная ниже ссылка больше не работает на указанной версии PHP. Он работает на PHP 5.6, что повышает надежность strtotime, но не идеален! Результаты в таблице являются живыми результатами из PHP 5.6.

Для чего это стоит, вот разбивка шаткого поведения strtotime при определении последовательной системы отсчета:

В основном только эти строки будут надежно давать вам одинаковую дату, независимо от того, в какой день недели вы находитесь в данный момент, когда звоните им:

Следующий код должен работать с любой пользовательской датой, просто использует нужный формат даты.

Я проверил код с PHP 5.2.17 Результаты:

Предполагая, что понедельник – первый день недели, это работает:

Здесь я рассматриваю воскресенье как первую и субботу как последний день недели.

Начало: 05-08-2012
Конец: 11-08-2012

Это то, что я использую, чтобы получить первый и последний день недели из любой даты.
В этом случае понедельник – первый день недели…

Просто используйте date($format, strtotime($date,’ LAST SUNDAY + 1 DAY’));

Это кратчайшее и наиболее читаемое решение, которое я нашел:

Указанная PHP версия pre 5.3 следующая функция дает вам первый день недели данной даты (в данном случае – воскресенье, 2013-02-03):

Сначала вы должны получить следующий понедельник, затем получить “последний понедельник” следующего понедельника. Поэтому, если данная дата понедельника, она вернется с той же датой не в последнюю неделю понедельника.

Если вы хотите, чтобы понедельник начинался с вашей недели, сделайте следующее:

Умный способ сделать это – позволить PHP обрабатывать разницу в часовом поясе и летнее время (DST). Позвольте мне показать вам, как это сделать.

Эта функция будет генерировать все дни с понедельника по пятницу включительно (удобна для создания рабочих дней недели):

Интересно только в понедельник, как спросил ОП?

Вы анализируете дату, используя strptime() и используйте date() на результат:

Другой способ сделать это.

Самый простой способ получить первый день (понедельник) текущей недели:

где 604800 – количество секунд в течение 1 недели (60 * 60 * 24 * 7).

Этот код получит следующий понедельник и уменьшит его на 1 неделю. Этот код будет работать в любой день недели. Даже если сегодня понедельник.

Я нашел это довольно расстраивающим, учитывая, что мой часовой пояс австралийский и что strtotime() ненавидит даты в Великобритании.

Если текущий день – воскресенье, то strtotime(«monday this week») вернется через день.

Чтобы преодолеть это:

Предостережение. Это относится только к датам Австралии/Великобритании.

Я несколько раз выступал против этого вопроса и всегда удивлял, что функции даты не делают это проще или понятнее. Здесь мое решение для PHP5, которое использует класс DateTime :

Необходимо клонировать, чтобы не изменять исходную дату.

Это не лучший способ, но я тестировал, и если я на этой неделе, я получу правильный понедельник, и если я нахожусь в понедельник, я получу это в понедельник.

Источник

Получить первый день недели в PHP?

34 ответа

Вот что я использую.

$day содержит число от 0 до 6, представляющее день недели (воскресенье = 0, понедельник = 1 и т.д.).
$week_start содержит дату воскресенья текущей недели как mm-dd-yyyy.
$week_end содержит дату субботы текущей недели как mm-dd-yyyy.

Заменить время(). Следующие воскресные/последние понедельные методы не будут работать, если текущий день воскресен/понедельник.

Очень просто использовать strtotime function:

Он отличается немного через версии PHP:

Сравнение в Edge-Cases

Относительные описания, подобные этой неделе, имеют свой собственный контекст. Ниже показаны выходные данные на эту неделю понедельника и воскресенья, когда они находятся в понедельник или воскресенье:

Againt немного отличается через версии PHP:

Держите его простым:

Это дает вам день недели самой даты, где 0 = воскресенье и 6 = суббота. Оттуда вы можете просто рассчитать назад до того дня, когда захотите.

Для чего это стоит, вот разбивка неуклюжего поведения strtotime при определении согласованной системы отсчета:

В основном только эти строки надежно дадут вам ту же дату, независимо от того, в какой день недели вы сейчас находитесь, когда вы их вызываете:

Это будет охватывать границы года и високосные годы.

Следующий код должен работать с любой пользовательской датой, просто использует нужный формат даты.

Я проверил код с PHP 5.2.17 Результаты:

Здесь я рассматриваю воскресенье как первую и субботу как последний день недели.

Начало: 05-08-2012
Конец: 11-08-2012

Это кратчайшее и наиболее читаемое решение, которое я нашел:

Если вы хотите, чтобы понедельник начинался с вашей недели, сделайте следующее:

Сначала вы должны получить следующий понедельник, затем получить «последний понедельник» следующего понедельника. Поэтому, если данная дата понедельника, она вернется с той же датой не в последнюю неделю понедельника.

Эта функция будет генерировать все дни с понедельника по пятницу включительно (удобна для создания рабочих дней недели):

Интересно только в понедельник, как спросил ОП?

Я нашел это довольно расстраивающим, учитывая, что мой часовой пояс австралийский и что strtotime() ненавидит даты в Великобритании.

Чтобы преодолеть это:

Предостережение. Это относится только к датам Австралии/Великобритании.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *