powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / туплю с разбивкой временного отрезка на N равных
16 сообщений из 16, страница 1 из 1
туплю с разбивкой временного отрезка на N равных
    #37780740
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем задача следующая :

нужно для построений графиков написать функцию которая бы делила временной отрезок на 10 равных.
заранее прошу сильно не судите строго за корявый код php, я тут новичок.
пытаюсь так :

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
function mdate_diff($date1, $date2) //функция даёт число секунд между 2-мя датами
{
    $diff = strtotime($date2) - strtotime($date1);
    return abs($diff);
}

function get_data_for_chart ($D1,$D2)
{
    global $db, $param;
 $T1= '00:00:00';
 $T2= '00:00:00';
if ((is_null ($D1)==='true'   ) or ($D1==''))  {$D1='03.05.2004';}
if ((is_null ($D2)==='true'  ) or  ($D2==''))  {$D2='04.05.2045' ;}
$D1_M= explode('.',$D1);
$T1_M= explode(':',$T1);
$D2_M= explode('.',$D2);
$T2_M= explode(':',$T2);
$S = mdate_diff($D1.' '.$T1,$D2.' '.$T2); 
$Num_of_div=10; // число разбиений
   $R='';

$Offs=$S/$Num_of_div; //смещение в секундах

for ($i = 0; $i <= $S; $i=$i+$Offs) 
{
//$dates[$I1]= date("M-d-Y H-i-s", mktime ($T1_M[0],$T1_M[1],0+$i,$D1_M[1],$D1_M[0],$D1_M[2]));
$dates[$I1]= date("M-d-Y H-i-s", mktime ($T1_M[0],$T1_M[1],0+$i,$D1_M[1],$D1_M[0],$D1_M[2]));  
$R= $R. $S.' '.$dates[$I1].chr(13) ; // это так для теста
$I1++;
}
result $dates
}




а результат почему - то такой :


May-03-2004 00-00-00
Jun-08-2008 14-30-00
Jul-15-2012 05-00-00
Aug-20-2016 19-30-00
Sep-26-2020 10-00-00
Nov-02-2024 00-30-00
Dec-08-2028 15-00-00
Jan-14-2033 05-30-00
Feb-19-2037 20-00-00
Mar-28-2041 10-30-00
May-04-2045 01-00-00

последняя дата должна быть May-04-2045 00-00-00.
откуда лишний час - 01 ?

ну или кто - нибудь уже решал подобную задачу ? предложит свой алгоритм решения ?
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37780844
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переведите в unixtime, разделите отнимете, прибавьте, переведите обратно.
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37780885
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettпереведите в unixtime, разделите отнимете, прибавьте, переведите обратно.



а где вы советуете перевести в unixtime . я разве не перевожу mktime - ом ?
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37780893
qwerty1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что получилось у меня)
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
$time_first = mktime(00,00,00,01,01,2000);
$time_second = mktime(00,00,00,01,01,2010);

// Разница во времени 
$diff = $time_second - $time_first;

// Кол-во делений
$count_division = 10;

// Смещение
$offset_time = $diff / $count_division;

$time_array = array(); 

// Занесём все значения в массив
for($i = 0; $i <= $count_division; $i++){
    $time_array[$i] = date("Y-M-d H:i:s", $time_first);
    
    // Прибавляя смещение
    $time_first += $offset_time;
}

echo '<pre>';
print_r($time_array);
echo '</pre>';


Вроде всё работает, а по вашему коду, я вообще не понимаю как он выводит 45 год? Unix время в 38 истекает)))Такого быть не может. как то вы всё сложно делаете)
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37780919
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty1992Вот что получилось у меня)
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
$time_first = mktime(00,00,00,01,01,2000);
$time_second = mktime(00,00,00,01,01,2010);

// Разница во времени 
$diff = $time_second - $time_first;

// Кол-во делений
$count_division = 10;

// Смещение
$offset_time = $diff / $count_division;

$time_array = array(); 

// Занесём все значения в массив
for($i = 0; $i <= $count_division; $i++){
    $time_array[$i] = date("Y-M-d H:i:s", $time_first);
    
    // Прибавляя смещение
    $time_first += $offset_time;
}

echo '<pre>';
print_r($time_array);
echo '</pre>';


Вроде всё работает, а по вашему коду, я вообще не понимаю как он выводит 45 год? Unix время в 38 истекает)))Такого быть не может. как то вы всё сложно делаете)

действительно рабочий вариант. А почему Unix время в 38 истекает ?
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37780938
qwerty1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81,

Потому что закодированно оно 4 байтами, то есть максимальное число в восьмиричной сс это "0x77777777"? так уж сделали когда его создавали, то есть вы можете посмотреть функцией
Код: php
1.
echo date("Y-M-d H:i:s", 0x77777777);


Когда оно закончится) Или поставить все нули, чтоб узнать когда его придумали) Почитайте в интернете если вам интересно)
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37780957
qwerty1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81,

Поэтому не используйте юникс время меньше 1970 и больше 2037. Будет бред)
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37780984
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty1992,

сейчас многие переходят на 64х процессоры, так что таймстамп относительно неограничен
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37781003
qwerty1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,

не совсем в этом дело) Вообщем не замарачивайтесь) А можно вопрос давно прогаете на php?
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37781162
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty1992artas,

не совсем в этом дело) Вообщем не замарачивайтесь) А можно вопрос давно прогаете на php?

если вопрос ко мне , я 3 месяца ))
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37781168
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasqwerty1992,

сейчас многие переходят на 64х процессоры, так что таймстамп относительно неограничен

может быть вы и правы. грубо говоря "на моём хостинге" решение qwerty1992 работает и для отрезка :


Код: php
1.
2.
$time_first = mktime(21,00,00,01,05,2012);
$time_second = mktime(21,01,00,01,05,2080);



вот полюбуйтесь :

2012-Jan-05 21:00:00
201ct-24 14:48:06
2025-Aug-12 07:36:12
2032-May-31 00:24:18
2039-Mar-19 16:12:24
2046-Jan-05 09:00:30
2052-Oct-24 01:48:36
2059-Aug-12 18:36:42
2066-May-31 11:24:48
2073-Mar-19 04:12:54
2080-Jan-05 21:01:00
))))
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37781297
qwerty1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81,

Интересно, а попробуйте ввести вместо года какое либо большое число, наподобие этого: 99999999999999999999999999
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37781300
qwerty1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81,

Да вопрос был к вам) У меня вот тоже третий месяц закончился)
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37781460
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty1992andron81,

Да вопрос был к вам) У меня вот тоже третий месяц закончился)

видимо я менее сообразителен )))
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37782007
qwerty1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81,

нет. Я толком не умею програмить, но взял с себя слово что буду следовать советам мак коннелла(Совершенный код)
...
Рейтинг: 0 / 0
туплю с разбивкой временного отрезка на N равных
    #37783071
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty1992andron81,

нет. Я толком не умею програмить, но взял с себя слово что буду следовать советам мак коннелла(Совершенный код)
макконел это конечно хорошо. но и о своей голове забывать не стоит.
или вы думаете что поклонение макконелу автоматически делает ваш код - совершенным? )))
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / туплю с разбивкой временного отрезка на N равных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]