Первый день недели

Tommy

Новичок
Такой код
PHP:
$time = strtotime('2011-01-02');
echo date('W', $time);
Возвращает 52 неделю. Очевидно неделя начинается с понедельника.

Возникло 2 вопроса:
1. Как узнать с какого дня (понедельник/воскресенье) начинается неделя?
2. Как поменять первый день недели?

Спасибо за внимание.
 

Dovg

Продвинутый новичок
Как поменять первый день недели?
Для этого надо быть президентом, императором, ну или богом.

Вообще, первой неделей года считается та, в которой четверг существует уже в новом году. Если я правильно помню стандарт. Т.е. если первое января - четверг, то неделя началась в новом году, а если пятница, то первая неделя еще не началась.

Ссылки по теме:
http://www.faqs.org/rfcs/rfc3339.html
http://www.cl.cam.ac.uk/~mgk25/iso-time.html

В моем любимом фреймворке вот такая реализация
PHP:
			if (!$year)
				$year = date('Y');

			Assert::isTrue(
				($weekNumber > 0)
				&& ($weekNumber <= self::getWeekCountInYear($year))
			);
			
			$date =
				new self(
					date(
						self::getFormat(),
						mktime(
							0, 0, 0, 1, 1, $year
						)
					)
				);
			
			$days =
				(
					(
						$weekNumber - 1
						+ (self::getWeekCountInYear($year - 1) == 53 ? 1 : 0)
					)
					* 7
				) + 1 - $date->getWeekDay();
			
			return $date->modify("+{$days} day");
 

baev

‹°°¬•
Команда форума
Очевидно неделя начинается с понедельника.
— гм.
Цитата с мануала (функция date()):
W Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0)
— да, очевидно неделя начинается с понедельника…
 
Сверху