В настоящее время я использую плагин Calendar jQuery для отображения созданного вами Календаря. Все данные заполняются из базы данных SQL с использованием PHP. Я нахожусь в точке с календарем, где мне нужно начинать идти вперед и назад во времени. У меня много неприятностей, делающих это в течение недели и месяца. Для дневного просмотра это было неплохо.Расчет начала и окончания недели и месяца?
Это мой код для дня
function startTime() {
$today = getdate();
$startTime = mktime(8, 0, 0, $today["mon"], $today["mday"]+$_SESSION['number'], $today["year"]);}
Я тогда передать $startTime
в другую функцию, которая делает запрос SQL. $_SESSION[ 'number']
установлено в 0, если оно не было установлено ранее, в противном случае я добавляю 1 или вычитаю 1 в зависимости от того, достигнут ли пользователь следующий или предыдущий. endTime()
- почти такая же функция.
Хотелось бы только внести изменения в мои функции startTime()
и endTime()
, если это возможно.
Heres грязный и непроверенные (Наши серверы вниз атм) код для расчета день/неделя/месяц
function startTime($type)
{
$today = getDate();
$startTime = mktime(8, 0, 0, $today["mon"], $today["mday"]+$_SESSION['number'], $today["year"]);
if ($type == "day")
{
$startTime = mktime(8, 0, 0, $today["mon"], $today["mday"]+$_SESSION['number'], $today["year"]);
}
if ($type == "week")
{
if ($today['w'] == 0)
{
$startTime = mktime(8, 0, 0, $today["mon"], $today["mday"]+($_SESSION['number'] * $_SESSION['multiplier']), $today['year']);
}
else
{
$day = strtotime("last Sunday");
$today = getdate($day);
$startTime = mktime(8, 0, 0, $today["mon"], $today["mday"]+($_SESSION['number'] * $_SESSION['multiplier']), $today['year']);
}
}
if ($type == "month")
{
$startTime = mktime(8, 0, 0, $today["mon"]+($_SESSION['number']), 0, $today['year']);
}
return $startTime;
}
function endTime(type)
{
$today = getdate();
$endTime = mktime(20, 0, 0, $today["mon"], $today["mday"]+$_SESSION['number'], $today["year"]);
if ($type == "day")
{
$endTime = mktime(20, 0, 0, $today["mon"], $today["mday"]+$_SESSION['number'], $today["year"]);
}
if ($type == "week")
{
if ($today['w'] == 6)
{
$endTime = mktime(20, 0, 0, $today["mon"], $today["mday"]+($_SESSION['number'] * $_SESSION['multiplier']), $today['year']);
}
else
{
$day = strtotime("next Saturday");
$today = getdate($day);
$endTime = mktime(20, 0, 0, $today["mon"], $today["mday"]+($_SESSION['number'] * $_SESSION['multiplier']), $today['year']);
}
}
if ($type == "month")
{
$day = strtotime("next month - 1 hour");
$today = getdate($day);
$endTime = mktime(8, 0, 0, $today["mon"]+($_SESSION['number']), $today["mday"], $today['year']);
}
return $endTime;
}
Я хотел бы поблагодарить всех за время, это мой первый пост так, пожалуйста, сообщите я знаю, есть ли какие-то плохие практики в моем посте. Я искал stackoverflow и google для решения этой проблемы и не нашел ее.
Вы получение ошибки или вы ищете обзор кода? – Pitchinnate
Обзор кода, я должен был сказать. Как я уже сказал, наш сервер отключен, но я почти уверен, что расчет за месяц не сработает. Чтобы исправить месяц, я придумал это, но я не знаю, работает ли strtotime таким образом. '$ day = strtotime (" + ". $ _ SESSION ['number']." Month - 1 hour "); ' ' $ today = getdate ($ day); ' ' $ endTime = mktime (8, 0, 0, $ today ["mon"] + ($ _ SESSION ['number']), $ today ["mday" ], $ today ['year']); ' – Auro