Преобразование даты в номер недели

OVenGo

Новичок
Преобразование даты в номер недели

Вопрос следующий...
Есть переменная, которая содержит следующее значение:
$d="25.10.2005";
Есть ли способ и можно и как-нить узнать сия дата к какому номеру недели года 2005 относилась или нет посредством PHP?
 

Фанат

oncle terrible
Команда форума
можно.
1. строковыми функциями разбить дату на составляющие
2. из них получить юникс таймстамп
3. из таймстампа получить номер недели
 

OVenGo

Новичок
Фанат
Ок. Понял. Интересует только каким образом осуществить п.3?
 

Фанат

oncle terrible
Команда форума
Tor
там не всё так просто, вроде бы

itprog
круто! Я многое повидал на этом форуме, но ответ с опережением - впервые! =)
 

Tor

Новичок
там не всё так просто, вроде бы
ну почему же?
4) находим таймстамп первого января сего года
5) вычитаем из п.2 полученное в п.4
6) результат п.5. делим на кол-во секунд в неделе
7) применяем ceil
 

Tor

Новичок
а использовать date не проще ли?
да, действительно есть ключик "W"
хотя приписочка "weeks starting on Monday " может не удовлетворить тредстартера

какая неделя будет идти 1 января в 00:00:00 ?
и по логике и по моему алгоритму - первая
какие вопросы?
 

OVenGo

Новичок
Tor
Йо... Теперь я запутался окончательно...
Тогда совсем просто вопрос. какой коммандой можно вычислить таймстамп года?
itprog
Проще, но как я понимаю, date считывает дату в данный момент времени. Или я не прав? Если не прав, то поправьте, плз.
 

Andreika

"PHP for nubies" reader
Tor
PHP:
 $h = mktime(0,0,0,1,1,06);
// 4) 
 $h2 = mktime(0,0,0,1,1,06);
 // 5)
 $h = $h-$h2;
 //6) 
 $h = $h/(3600*24*7);
 //7) 
 echo "WEEK : ".ceil($h);
WEEK : 0
 

Tor

Новичок
Andreika
будем дальше гордится собой или прибавим единичку (как вариант заменить ceil на floor)?
 

clops

Новичок
кошмар!!!

PHP:
echo date('W',strtotime('25.10.2005'));
вот и вся математика
 

McSimm

Новичок
и тот и тот способ не так просты, зависит от того, что считать номером недели.

по ISO 1я неделя начинается с первого понедельника года, так что с помощью date() можно наткнуться например на следующее:
PHP:
date('Y-m-d H:i:s W', $t)
2005-01-02 12:00:00 53
 

Andreika

"PHP for nubies" reader
Tor
та хоть на корень из котангенса умножь, если те это поможет :)
 

clops

Новичок
имеем

PHP:
   echo date('W',strtotime('01.01.2005'))."<br />";
   echo date('W',strtotime('01.01.2006'));
выдаёт

1
1
 
Сверху