![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Функция DateTime::modify призвана модифицировать дату, согласно условию. В моем случае я хочу получить дату понедельника. На пример для даты 13.03.2013 датой понедельника будет 11.03.2013.
В целом функция работает хорошо, но есть одна загвоздка, которая (как я понимаю) связана со специфическим различием недель в разных странах: где-то неделя начинает в воскресенье, а где-то в понедельник. Так вот и получается не привычная для русского человека картинка, что для даты 10.03.2013 понедельником текущей недели будет не 04.03.2013, а 11.03.2013 т.к. php считает, что с воскресенья началась следующая неделя. Для наглядности календарик: ![]() Я перепробовал много вариантов, включающих смену локали и т.п. - нечего не помогает. Похоже на то, что в данном случае PHP категоричен. Как выход из ситуации я начал использовать derty huck - перед тем как применить модификацию "Monday this week", я применяю другую "- 1 day", тем самым смещая указатель даты влево. Конечно в какой-то мере это решает проблему, но создает некоторое неудобство в читабельности кода и я уверен, что может вылиться в проблемы. Может быть у кого-нибудь есть опыт решения этой проблемы? |
|||
|
||||
| Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
а если просто для нормальных стран использовать
а для глупых американских
И от этого уже плясать .. -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Gold Dragon,
Тут чуть-чуть другая задача. То, что Вы предлагаете - это лишь часть функционала, концепция которого инкапсулированна в DateTime::modify. Так вот там уже жестко забита логика типа $date->format('w'); и как изменить ее на $date->format('N'); я не понимаю. Это же объект самого PHP, я не могу менять его логику переписыванием. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
||||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Aliance,
Я имел ввиду, что я не могу изменить ход работы функции поменяв в исходнике одну букву. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Ну в теории и это возможно, только это было бы глупо. Зачем, если есть наследование.
|
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
а какая вообще конечная цель.. не могу уловить суть задачи.. Может есть и другой подход...
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |