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

Форум PHP

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

 

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

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

тема: Как обновлять дату каждые 36 часов?
 
 автор: SharkNancy   (10.08.2013 в 03:56)   письмо автору
 
 

Есть такая проблема. Имеется код, который подсчитывает дату на 36 часов вперед. Вроде бы все просто:

$limit = date('j F',time()+129600);   // 60*60*48 = 129600


Но! Нужен скрипт, который будет считать каждые 36 часов от даты Х, например от Нового Года, и затем выводить эту дату, если она является ближайшей следующей кратной 36 часам к текущей дате. Например, если сегодня 10 августа - будет выведено 11 августа (если только он является кратным 36 часам), а не 9 августа.

Не знаю даже как это все реализовать... Помогите пожалуйста!

Заранее спасибо!

  Ответить  
 
 автор: confirm   (10.08.2013 в 04:00)   письмо автору
 
   для: SharkNancy   (10.08.2013 в 03:56)
 

Ближайшую или именно кратную 36 часам?

  Ответить  
 
 автор: SharkNancy   (10.08.2013 в 05:52)   письмо автору
 
   для: confirm   (10.08.2013 в 04:00)
 

Ближайшую и кратную 36)

  Ответить  
 
 автор: confirm   (10.08.2013 в 06:13)   письмо автору
 
   для: SharkNancy   (10.08.2013 в 05:52)
 

Кратную, если только повезет. То есть, если я буду контролировать время на клиенте, и клиент будет находиться в онлайн режиме более 36 часов, то 100% вероятности, что я смогу идентифицировать такую метку времени, запрашивая текущее время каждую секунду с помощью JavaScript.
На сервере такое гарантированно невозможно, так как запрос скрипта не обязательно произойдет во время отвечающее этому условию.
Отсюда следует, что отслеживать надо не кратное, и не ближайшее время, а время которое больше или равно 36 часам - текущее время минус контрольное время выраженное в часах.
Самое разумное, на мой взгляд, это получив эту разницу времени, сравнив ее с указанным периодом, добавляем к контрольной метке этот период и запоминаем ее для последующего сравнения с текущим временем. Если будут требоваться для чего либо все прошедшие эти метки времени, то их можно будет всегда получить, если стартовое время так же хранить
<?
$start 
= new DateTime('2013-05-12 03:35:00'); //стартовое время
$end = new DateTime(); //текущее время
$interval = new DateInterval('PT36H'); //заданный интервал в 36 часов
//так добавляется к контрольному времени период для дальнейшего контроля
$start $start->add($interval);
//так можно получить все прошедшие интервалы времени
//от стартовой метки по текущее время
$period =  new DatePeriod($start$interval$end);  
foreach (
$period as $day) echo $day->format('Y-m-d H:i:s').'<br>';

Можно использовать и функции даты/времени, например time(), и все расчеты производить в этих единицах времени, результат будет тот же.

  Ответить  
 
 автор: Valick   (11.08.2013 в 00:54)   письмо автору
 
   для: confirm   (10.08.2013 в 06:13)
 

помоему все гораздо проще
из текущей даты вычитаем дату Х, затем делим эту байду на 36 часов, находим остаток и складываем текущая дата + (36 часов - остаток)

  Ответить  
 
 автор: confirm   (11.08.2013 в 05:31)   письмо автору
 
   для: Valick   (11.08.2013 в 00:54)
 

Я о чем то ином по сути говорил? Только вот остаток то зачем, и делить чего-то, для бухгалтерии? Просто если больше или равно периоду, то запоминаем новую временную метку.

  Ответить  
 
 автор: Valick   (11.08.2013 в 07:05)   письмо автору
 
   для: confirm   (11.08.2013 в 05:31)
 

Я о чем то ином по сути говорил?
да
Просто если больше или равно периоду, то запоминаем новую временную метку.
зачем? по условию у нас есть дата Х все остальное математика. Например если человек относительно даты икс обратился первый раз через пол года, что бы вы там запоминали все это время?

  Ответить  
 
 автор: confirm   (11.08.2013 в 07:13)   письмо автору
 
   для: Valick   (11.08.2013 в 07:05)
 

Читайте внимательно.
Что касается полугодичной давности, то все может быть, но это не ко мне. Я же не представляю, нужно ли то, что полгода не востребовано, да и время Х для каждого своего, это уже нечто.

  Ответить  
 
 автор: Valick   (11.08.2013 в 07:30)   письмо автору
 
   для: confirm   (11.08.2013 в 07:13)
 

Я внимательно читаю, и не только что пишите вы и то что пишу я, но и ТЗ.
На сервере такое гарантированно невозможно, так как запрос скрипта не обязательно произойдет во время отвечающее этому условию.
а вот условие
дату, если она является ближайшей следующей кратной 36 часам к текущей дате

  Ответить  
 
 автор: confirm   (11.08.2013 в 07:44)   письмо автору
 
   для: Valick   (11.08.2013 в 07:30)
 

Вы ко мне какие-то претензии предъявляете?
1. Я не вижу условий в вопросе, кроме описания точки отсчета.
2. Если о времени Х лично для меня установленного еще во времена революции, то такого быть не должно, по той простой причине, что меня просто не знают, да я могу и просто не существовать.
3. Если стартовая точка отсчета для каждого индивидуальна, то разумно и назначит ее старт пользователем - всякие деления побоку при этом.
4. Если эта точка для всех одна, то зачем ждать меня полгода, есть и другие пользователи, которые ее обновят
5. Если все это лежит безхозно длительное время, то это никому не нужно.

Что и как, вот этого в вопросе нет, поэтому и сделано мною замечание о времени запроса сервера. А зачем мне гадать? Коли вы провидец и точно знаете как должно быть, то свои предложения не мне, а автору вопроса.

  Ответить  
 
 автор: Valick   (11.08.2013 в 08:55)   письмо автору
 
   для: confirm   (11.08.2013 в 07:44)
 

Слишком много если, для человека которому незачем гадать :-P
Коли вы провидец и точно знаете как должно быть, то свои предложения не мне, а автору вопроса.
автор залётная пришла и ушла, а вы мне гораздо роднее :-D

  Ответить  
Rambler's Top100
вверх

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