Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опять работа с датой, Подскажите как вычислить неделю 
V
    Опции темы
finogeev
  Дата 1.12.2009, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



Тормознулся на одной задачи ... Описываю
Человек попадает на страницу выводящую текущую неделю (пн - вс) ...

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

с помощью strtotime просто измучился ... мудрить ...

Может есть выход попроще ?
PM MAIL ICQ   Вверх
bars80080
Дата 1.12.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Код

$time = time();// - 2*86400;
echo '<br />сегодня: '.date('j F Y', $time);

$w = date('w', $time);
$p = $w - 1;
if($p < 0) $p += 7;

$ptime = $time - $p*86400;

echo '<br />последний понедельник: '.date('j F Y', $ptime);

PM MAIL WWW   Вверх
finogeev
Дата 1.12.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



Огромное спасибо!!!!

Это сообщение отредактировал(а) finogeev - 1.12.2009, 15:22
PM MAIL ICQ   Вверх
Pitlord
Дата 1.12.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 4
Всего: 7



bars80080, не во всех сутках 86400 секунд.

P.S.
Код

<?php
echo date('d.m.Y', strtotime('last Monday'));
?>


Это сообщение отредактировал(а) Pitlord - 1.12.2009, 16:13
PM MAIL   Вверх
bars80080
Дата 1.12.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Pitlord @  1.12.2009,  15:13 Найти цитируемый пост)
не во всех сутках 86400 секунд

да? а в каких и сколько?
PM MAIL WWW   Вверх
skyboy
Дата 1.12.2009, 18:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(bars80080 @  1.12.2009,  17:10 Найти цитируемый пост)
да? а в каких и сколько? 

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

PM MAIL   Вверх
bars80080
Дата 1.12.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



хм, мне казалось timestamp - универсальный. то есть если был момент 1234567890, то даже если произойдёт перевод стрелок назад, то 1234567890 уже не выпадет. а вот date() считает исходя из сдвига поясного и летней поправки

или я ошибаюсь?
PM MAIL WWW   Вверх
Pitlord
Дата 1.12.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 4
Всего: 7



bars80080, 
Код

<?php

date_default_timezone_set('Europe/Moscow');

$t = 1256421600;

if( date('Y-m-d H:i:s', $t) == date('Y-m-d H:i:s', $t + 3600) )
{
    echo '?!';
}

?>


Добавлено через 3 минуты и 26 секунд
Соответственно, твой скрипт должен показать неправильный результат при $time = mktime(23, 0, 0, 10, 25, 2009), например

Это сообщение отредактировал(а) Pitlord - 1.12.2009, 18:30
PM MAIL   Вверх
bars80080
Дата 1.12.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



мда,
тогда правильным должно быть:

Код

$time = mktime(23, 0, 0, 10, 25, 2009);
echo '<br />сегодня: '.date('j F Y', $time);
$w = date('w', $time);
$p = $w - 1;
if($p < 0) $p += 7;

$ptime = $time - $p*86400;
$ptime -= date('I', $ptime)*3600;
echo '<br />последний понедельник: '.date('j F Y', $ptime);


PM MAIL WWW   Вверх
Pitlord
Дата 1.12.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 4
Всего: 7



bars80080, проверь свой вариант с $time = mktime(0, 0, 0, 3, 31, 2009):

Код

<?php

date_default_timezone_set('Europe/Moscow');

$time = mktime(0, 0, 0, 3, 31, 2009);

# Твой вариант

echo '<br />сегодня: '.date('j F Y H:i:s', $time);
$w = date('w', $time);
$p = $w - 1;
if($p < 0) $p += 7;
$ptime = $time - $p*86400;
$ptime -= date('I', $ptime)*3600;
echo '<br />последний понедельник: '.date('j F Y H:i:s', $ptime), '<br />';


# Через strtotime()
echo date('j F Y H:i:s',  date('w', $time) == 1 ? $time : strtotime('last Monday', $time)), '<br />';

?>


Это сообщение отредактировал(а) Pitlord - 1.12.2009, 19:29
PM MAIL   Вверх
bars80080
Дата 1.12.2009, 20:07 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ну, намудрить чего-нибудь можно
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.