Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как можно определить числа дней текущей недели?
 
 автор: kis-kis   (18.05.2007 в 18:10)   письмо автору
 
 

Как можно определить числа дней текущей недели?
Допустим,
Пн - 14.05
Вт - 15.05
Ср - 16.05
Чт - 17.05
Пт - 18.05
Сб - 19.05
Вс - 20.05

И чтобы с наступлением новой недели числа соответсвенно менялись.
Спасибо.

   
 
 автор: kasmanaft   (18.05.2007 в 18:52)   письмо автору
 
   для: kis-kis   (18.05.2007 в 18:10)
 

Удобно будет воспользоваться функцией strtotime.. Ну и конечно же date
Приблизительный код:

<?php
echo date('D - d.m'strtotime('last monday')), "<br>";
echo 
date('D - d.m'strtotime('last tuesday'));
?>

   
 
 автор: mefestofel   (18.05.2007 в 19:07)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 18:52)
 

Так более красиво:

<?php
$i 
= -1;
echo 
date('D - d.m'strtotime($i." day")), "<br>";  
?>

$i - это смещение относительно текущего дня недели
т.е. узнаете каким текущий день идет по счету в неделе, и отсчитываете сколько надо.

   
 
 автор: kis-kis   (18.05.2007 в 19:08)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 18:52)
 

А больше нет никакого варианта, а то этот не совсем подходит... Но все равно большое спасибо.)) А во втором коде тогда как будет выглядеть все числа текущей недели?

   
 
 автор: mefestofel   (18.05.2007 в 19:26)   письмо автору
 
   для: kis-kis   (18.05.2007 в 19:08)
 


<?php
function GetDateWeek($number)
{
$k strtotime("last Monday");
$Year date("Y",$k);
$Month date("m",$k);
$Day date("d",$k);
if (
$Month && $Day 8) {
$Year $Year--;
$Month $Month--;
}
if (
$Month && $Day 8)
$Month $Month--;

$Day $Day+7*$number;
echo 
date('d-m-Y'mktime(000$Month$Day$Year));
echo 
"<br>";
$Day $Day+6;
echo 
date('d-m-Y'mktime(000$Month$Day$Year));
}
GetDateWeek(0);
?>

Так можно вывести границы текущей недели, если я правильно понял Ваш вопрос, то этот вариант должен Вас устроить. Передавая в функцию 0, мы тем самым получаем границы текущей недели, -1 - предыдущей, 1 - следующей.
Для наглядности функция упрощена и данные выводятся на экран, думаю Вы сами подделаете так как Вам надо.

   
 
 автор: kasmanaft   (18.05.2007 в 19:46)   письмо автору
 
   для: kis-kis   (18.05.2007 в 19:08)
 

Да, тот метод, что я предложил не очень подходит..
<?php
$now 
date('w'time());
if (
$now == 0$now += 7;
for (
$i 1$i <= 7$i++)
    echo 
date('D - d.m'strtotime(($i-$now)." day")), "<br>";
?>

   
 
 автор: kis-kis   (18.05.2007 в 19:58)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 19:46)
 

Вот это то что нужно! Спасибо.))

   
 
 автор: kasmanaft   (18.05.2007 в 20:01)   письмо автору
 
   для: kis-kis   (18.05.2007 в 19:58)
 

добавил условие.. была проблема с тем, что воскресенье - нулевой по счету день

   
 
 автор: kis-kis   (18.05.2007 в 20:04)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 20:01)
 

Все работало и без этого условия. Спасибо большое.))

   
 
 автор: kis-kis   (24.05.2007 в 16:50)   письмо автору
 
   для: kis-kis   (18.05.2007 в 20:04)
 

А можно ли определить числа на две недели вперед от текущей даты? Спасибо.

   
 
 автор: kasmanaft   (24.05.2007 в 18:03)   письмо автору
 
   для: kis-kis   (24.05.2007 в 16:50)
 

Просто в цикле считайте не до семи, а до-сколько-надо:

for ($i = 1; $i <= 14; $i++)

   
 
 автор: CrazyAngel   (24.05.2007 в 17:08)   письмо автору
 
   для: kis-kis   (18.05.2007 в 18:10)
 

strftime

   
 
 автор: kis-kis   (24.05.2007 в 17:10)   письмо автору
 
   для: CrazyAngel   (24.05.2007 в 17:08)
 

Это не совсем то...

   
 
 автор: kis-kis   (24.05.2007 в 20:32)   письмо автору
 
   для: kis-kis   (24.05.2007 в 17:10)
 

Плиз, подскажите...

   
 
 автор: kasmanaft   (24.05.2007 в 20:36)   письмо автору
 
   для: kis-kis   (24.05.2007 в 20:32)
 

То, что я чуть выше посоветовал не подходит?
Тогда уточните, что именно нужно...

   
 
 автор: kis-kis   (24.05.2007 в 21:03)   письмо автору
 
   для: kasmanaft   (24.05.2007 в 20:36)
 

Что выше как раз подходит, но теперь немного другое нужно, вывести также от текущей даты - даты на 2 недели вперед...

   
 
 автор: kasmanaft   (24.05.2007 в 22:22)   письмо автору
 
   для: kis-kis   (24.05.2007 в 21:03)
 

Я имел ввиду пост от (24.05.2007 в 18:03) ...
Ну а если нужно +14 дней от сегодяшнего дня, то можно вот так:

for ($i = 1; $i <= 14; $i++) 
    echo date('D - d.m', strtotime($i." day")), "<br>"; 

Предыдущий вариант покажет текущую неделю и следующую... Увеличте $i - будет больше показывать... Поэкспериментируйте :)

   
 
 автор: kis-kis   (25.05.2007 в 12:04)   письмо автору
 
   для: kasmanaft   (24.05.2007 в 22:22)
 

Нет, Вы меня не поняли. Так выведет числа на две недели, независимо от текущего дня недели, а мне нужно, от сегодняшнего числа -> 2 недели. Т.е. если сегодня 23 мая, следовательно должен вывести числа до 5 июня... Так более понятно?! Спасибо Вам за ответ.

   
 
 автор: kasmanaft   (25.05.2007 в 16:24)   письмо автору
 
   для: kis-kis   (25.05.2007 в 12:04)
 

Ну начинайте считать от нуля.. что тут сложного? не пойму..
Последний приведенный мной вариант выведет от 24 мая по 6 июня - один день отняли - получили то, что нужно. В цикле считайте не с одного, а с нуля.

   
 
 автор: kis-kis   (25.05.2007 в 17:37)   письмо автору
 
   для: kasmanaft   (25.05.2007 в 16:24)
 

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

   
 
 автор: kasmanaft   (25.05.2007 в 17:53)   письмо автору
 
   для: kis-kis   (25.05.2007 в 17:37)
 

Я не пойму, Вы о каком варианте говорите? Вот это разве не то, что нужно?

<?
for ($i 0$i <= 13$i++)  
    echo 
date('D - d.m'strtotime($i." day")), "<br>";  
?>

Независимо от того, какой сегодня день, он покажет сегодня +13 дней вперед.

   
 
 автор: kis-kis   (27.05.2007 в 14:12)   письмо автору
 
   для: kasmanaft   (25.05.2007 в 17:53)
 

Спасибо, именно это и было нужно...))

   
 
 автор: kis-kis   (01.06.2007 в 16:58)   письмо автору
 
   для: kis-kis   (27.05.2007 в 14:12)
 


<select name="day" class="input_text">
<?php 
for ($i 2$i <= 13$i++)
echo 
"<option value='".date('Y-m-d'strtotime(($i)." day"))."'>".russ_date('D, j F'strtotime(($i)." day"))."</option>";
?>
</select>


Как сюда можно добавить еще одно условие - если дата выбрана и передана методом "POST",
то она была бы selected?
Спасибо.

   
 
 автор: kis-kis   (04.06.2007 в 09:41)   письмо автору
 
   для: kis-kis   (01.06.2007 в 16:58)
 

kasmanaft не поможете последний раз?!

   
 
 автор: kasmanaft   (04.06.2007 в 10:05)   письмо автору
 
   для: kis-kis   (04.06.2007 в 09:41)
 

Раз уж так, персонально :D
Можно сделать что-то типа етого:

for ($i = 2; $i <= 13; $i++)
{
    $date = date('Y-m-d', strtotime(($i)." day"));
    $selected = ($date === @$_POST['day']) ? 'selected' : '';
    echo "<option value='$date' $selected>".date('D - d.m', strtotime($i." day"))."</option>";
}

   
 
 автор: kis-kis   (04.06.2007 в 12:33)   письмо автору
 
   для: kasmanaft   (04.06.2007 в 10:05)
 

Спасибо.))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования