Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
6 / 6 / 3
Регистрация: 13.09.2013
Сообщений: 48

Задачка с определением учебной недели, Вывод инфы для студентов (верхняя/нижняя неделя, и т.д.)

28.03.2017, 15:19. Показов 1160. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть кусочек, который умеет учебную неделю выводить (Верхняя/Нижняя неделя).
Нужно запилить его, чтобы выводил ещё и текущую пару (В зависимости от времени: 1/2/3/4/5/6 пара) и сколько осталось до перерыва/до занятия.

Пары идут по такому учебному режиму:
1пара (8:30-9:15[пятиминутка]9:20-10:05(пер10мин)
2пара (10:15-11:00[пятиминутка]11:05-11:50(перер10мин)
3пара (12:00-12:45[пятиминутка]12:50-13:35(перер30мин)
4пара (14:05-14:50[пятиминутка]14:55-15:40(перер10мин)
5пара (15:50-16:35[пятиминутка]16:40-17:25(перер10мин)
6пара (17:35-18:20[пятиминутка]18:25-19:10(Занятия окончены)


Воскресение выходной.

Помогите сделать, вопрос имеет субъективную важность!

Вот, собственно говоря, скрипт (умеет только определять учебную неделю)

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
33
<?php
        $result="";
        $indexOfWeek=0;
        $dateDif=0;
        $dateTimeZone= new DateTimeZone("Asia/Yakutsk");
    $currentDate = new DateTime(null,$dateTimeZone);
        $currentYear=$currentDate->format("Y");
        $startDateOfLastAutumTerm = new DateTime(($currentYear-1)."-09-01",$dateTimeZone);
        $startDateOfSpringTerm = new DateTime($currentYear."-02-01",$dateTimeZone);
        $startDateOfAutumTerm = new DateTime($currentYear."-09-01",$dateTimeZone);
     
        $startDateOfWeekOfLastAutumTerm=$startDateOfLastAutumTerm->sub(new DateInterval("P".($startDateOfLastAutumTerm->format("N")-1)."D"));
        $startDateOfWeekOfSpringTerm=$startDateOfSpringTerm->sub(new DateInterval("P".($startDateOfSpringTerm->format("N")-1)."D"));
        $startDateOfWeekOfAutumTerm=$startDateOfAutumTerm->sub(new DateInterval("P".($startDateOfAutumTerm->format("N")-1)."D"));
     
        if($currentDate<$startDateOfWeekOfSpringTerm)
        {
            $dateDif=$currentDate->diff($startDateOfLastAutumTerm)->format("%a");  
         
        }else if($currentDate<$startDateOfWeekOfAutumTerm && $currentDate>=$startDateOfWeekOfSpringTerm)
        {
            $dateDif=$currentDate->diff($startDateOfWeekOfSpringTerm)->format("%a");  
         
        } else if($currentDate>=$startDateOfWeekOfAutumTerm)
        {
            $dateDif=$currentDate->diff($startDateOfWeekOfAutumTerm)->format("%a");
        }
        $indexOfWeek = (int)floor(($dateDif)/7);
        $weekName = ($indexOfWeek%2==0)?"Верхняя неделя":"Нижняя неделя";
?>
<div class="week_info">
    <p class="week_info_text"><?php echo $weekName; ?></p>
</div>
Добавлено через 2 часа 4 минуты
Там вроде секрет заключается в массиве
PHP
1
2
3
4
$dateRange = [
            ['TimeStart' => '8:30','TimeEnd'=>'9.15','TimeBreak'=>5],
            ['TimeStart' => '9:20','TimeEnd'=>'10.05','TimeBreak'=>10]
        ];
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2017, 15:19
Ответы с готовыми решениями:

Отображение недели (верхняя или нижняя)
Всееееем Привет :) задача такая сделать что бы при старте программы (FormCreate) проводилось определение какая сейчас неделя. Таким...

Верхняя нижняя границы A,B
Привет, ребята! Подскажите какой формулой можно рассчитать границу А и В. Применяется в последовательном анализе. Автор А. Вальд.

Верхняя и нижняя граница типов
Здравствуйте, подскажите пожалуйста есть ли в С++ функции подобные low и high из Pascal, чтобы узнать верхние и нижние значение типа. ( //...

2
0 / 0 / 1
Регистрация: 27.10.2015
Сообщений: 7
28.03.2017, 16:20
PHP
1
2
3
4
5
6
7
$rgTimes = array(
        '0:00', '1:00'
);
$fTime = '1:30';
if(strtotime($rgTimes[0]) <= strtotime($fTime) && strtotime($fTime) <= strtotime($rgTimes[1])){
        echo 'Дата входит в промежуток';
}
сделай что-то наподобие через foreach, а TimeBreak представь в виде конца перерыва и сравнивай конец пары и конец перерыва
0
6 / 6 / 3
Регистрация: 13.09.2013
Сообщений: 48
01.04.2017, 22:49  [ТС]
Цитата Сообщение от JomInG Посмотреть сообщение
сделай что-то наподобие через foreach
Спасибо за отклик. Запилил таки эту задачку. Правда пришлось пятиминутки игнорировать, чтоб не усложнять себе жизнь. А так в целом вроде работает.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
date_default_timezone_set('Asia/Yakutsk');
//Присваиваем текущее время!
$tekdate = strtotime(date('G:i')); 
$dayweek = date('w');
 
// Расписание начала пар!
$nachalo = array(
    "8:30", "10:15", "12:00",
    "14:05", "15:50", "17:35",
    );
 
foreach ($nachalo as &$value) {
    $value = strtotime($value);
};
unset($value);
 
// Расписание окончания пар!
$konec = array(                             
    "10:05", "11:50", "13:35",
    "15:40", "17:25", "19:10",
    );
 
foreach ($konec as &$value) {
    $value = strtotime($value);
};
unset($value);
 
$timeNight = strtotime('23:59');
$timeMorning = strtotime('0:00');
 
if($dayweek != 0) { 
if ($tekdate >= $nachalo[0] && $tekdate < $konec[5]) {
    if ($tekdate >= $nachalo[0] && $tekdate < $konec[0]) {$resultat = '1 Пара'. ' До конца занятия: '. ($konec[0]-$tekdate)/60;
    } elseif ($tekdate >= $konec[0] && $tekdate < $nachalo[1]) { $resultat = 'Перерыв'. ' До начала 2 пары: '. ($nachalo[1]-$tekdate)/60; };
 
    if ($tekdate >= $nachalo[1] && $tekdate < $konec[1]) {$resultat = '2 Пара'. ' До конца занятия: '. ($konec[1]-$tekdate)/60;
    } elseif ($tekdate >= $konec[1] && $tekdate < $nachalo[2]) { $resultat = 'Перерыв'. ' До начала 3 пары: '. ($nachalo[2]-$tekdate)/60; };
 
    if ($tekdate >= $nachalo[2] && $tekdate < $konec[2]) {$resultat = '3 Пара'. ' До конца занятия: '. ($konec[2]-$tekdate)/60;
    } elseif ($tekdate >= $konec[2] && $tekdate < $nachalo[3]) { $resultat = 'Перерыв'. ' До начала 4 пары: '. ($nachalo[3]-$tekdate)/60; };
 
    if ($tekdate >= $nachalo[3] && $tekdate < $konec[3]) {$resultat = '4 Пара'. ' До конца занятия: '. ($konec[3]-$tekdate)/60;
    } elseif ($tekdate >= $konec[3] && $tekdate < $nachalo[4]) { $resultat = 'Перерыв'. ' До начала 5 пары: '. ($nachalo[4]-$tekdate)/60; };
 
    if ($tekdate >= $nachalo[4] && $tekdate < $konec[4]) {$resultat = '5 Пара'. ' До конца занятия: '. ($konec[4]-$tekdate)/60;
    } elseif ($tekdate >= $konec[4] && $tekdate < $nachalo[5]) { $resultat = 'Перерыв'. ' До начала 6 пары: '. ($nachalo[5]-$tekdate)/60; };
 
    if ($tekdate >= $nachalo[5] && $tekdate < $konec[5]) {$resultat = '6 Пара'. ' До конца занятия: '. ($konec[5]-$tekdate)/60;
    };
}
elseif ($tekdate >= $konec[5] && $tekdate <= $timeNight) { $resultat = ' Занятия окончены ';}
elseif ($tekdate >= $timeMorning && $tekdate <= $nachalo[0]) { $resultat = ' Начало занятий в 8:30 ';};
 
} else {$resultat = 'Сегодня воскресение';};
 
echo $resultat;    
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2017, 22:49
Помогаю со студенческими работами здесь

Точная верхняя и нижняя грань
Докажите, что множество действительных чисел вида {4+2/n}, где n \in N , ограничено .Найдите точные верхнюю и нижнюю грань. Добавлено...

верхняя и нижняя суммы Дарбу
Нужно составить верхнюю и нижнюю сумму Дарбу для ф-ии f(x,y) = x - y на прямоугольнике \Pi = \left{ {(x,y): 2\leq x\geq 4, 1\leq y\geq 3}...

Верхняя и нижняя нумерация страниц в Word
На работе столкнулся с проблемой двойной нумерации в одном документе. Допустим верхняя нумерация начинается с 7 и далее, а нижняя с 9 и...

Верхняя и нижняя нумерация, начинающаяся с разных листов
Есть готовый документ, в нем должна быть верхняя (в левом углу), и нижняя (в правом углу) нумерация. Верхняя нумерация должна начинаться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru