Прочитал документацию на английском языке, ничего почти не понял... точнее мне сразу показалось, что все понял, чего ж там понимать-то... все вроде бы прозрачно. А как попытался использовать стал получать слегка неожиданные результаты. То оно прыгает на неделю вперед, то назад... И тут я понял, что ни черта не понял.
Так может кто-нибудь может внятно объяснить как пользоваться такими указателями времени, как "Monday last week", "Sunday this week", "Friday 1 week ago"?
Спустя 1 час, 36 минут, 6 секунд (15.10.2009 - 17:54) twin написал(а):
А что именно скачат? Я недавно тоже возился с календарем, ничего вроде не скакало.
Спустя 2 часа, 55 минут, 42 секунды (15.10.2009 - 20:50) bvn написал(а):
Monday last week в понедельник показывало 5.10, а во вторник вдруг стало показывать 12.10... Разве понедельник-вторник - это граница недели? Или как оно в хрена работает вообще?
Спустя 23 минуты, 48 секунд (15.10.2009 - 21:13) twin написал(а):
По стандарту GNU неделя начинается с воскресенья. Могу предположить, что еще нужно было учесть разницу по времени. Во сколько ты смотрел в понедельник? Может на сервере еще воскресенье было.))
Спустя 23 часа, 15 минут, 26 секунд (16.10.2009 - 20:29) bvn написал(а):
Сделал табличку для разных вариаций, подставляя время нескольких дней, идущих подряд... очень наглядно получилось и, кажется, я таки понял, как оно работает.
В данном случае недели считаются не от какого либо начала недели, как я предполагал, а от текущего дня. А фразы 'last' или 'this' определяют смотреть назад или вперед от текущего дня.
Так если сегодня пятница 16.10 и мы скажем 'Friday this week' мы получим сегодняшний же день, а если скажем 'Friday last week', то получим 9.10. Если повторим эту операцию завтра (в субботу), то 'Friday this week' уже даст 23.10, а 'Friday last week' 16.10.
Для получения нужного дня, нужной недели я слегка поизвращался (придумал не сам, видел у других, но теперь понял, как работает), для начала нам нужно определить неделю по дню, когда происходит смена недели, например, мы привыкли, что это Воскресенье (переход на понедельник - смена). Поэтому если мы берем 'Sunday this week' мы в любой день текущей недели получим именно 18.10, соответсвенно 'Sunday last week' - это 11.10. Используя Воскресенье нужной нам недели, как точку отсчета, мы можем получить любой другой день нужной нам недели:
strtotime('Monday last week', strtotime('Sunday this week')) даст нам 12.10.
Вот такой вот изврат, надеюсь, кому-нибудь пригодится.
В данном случае недели считаются не от какого либо начала недели, как я предполагал, а от текущего дня. А фразы 'last' или 'this' определяют смотреть назад или вперед от текущего дня.
Так если сегодня пятница 16.10 и мы скажем 'Friday this week' мы получим сегодняшний же день, а если скажем 'Friday last week', то получим 9.10. Если повторим эту операцию завтра (в субботу), то 'Friday this week' уже даст 23.10, а 'Friday last week' 16.10.
Для получения нужного дня, нужной недели я слегка поизвращался (придумал не сам, видел у других, но теперь понял, как работает), для начала нам нужно определить неделю по дню, когда происходит смена недели, например, мы привыкли, что это Воскресенье (переход на понедельник - смена). Поэтому если мы берем 'Sunday this week' мы в любой день текущей недели получим именно 18.10, соответсвенно 'Sunday last week' - это 11.10. Используя Воскресенье нужной нам недели, как точку отсчета, мы можем получить любой другой день нужной нам недели:
strtotime('Monday last week', strtotime('Sunday this week')) даст нам 12.10.
Вот такой вот изврат, надеюсь, кому-нибудь пригодится.
Спустя 2 года, 4 месяца, 2 дня, 23 часа, 21 минута, 9 секунд (19.02.2012 - 19:50) r-ul-ex написал(а):
date('Y-m-d',strtotime('Monday this week',strtotime(date('o-\\WW'))));
Получил дату понедельника текущей недели при условии что неделя начинается с понедельника (ISO 8601)
подсмотрел тут http://ru.php.net/strtotime