Php 计算更改周和月的开始和结束?
目前,我正在使用jQuery日历插件来显示我构建的日历。所有数据都是使用PHP从SQL数据库中填写的。我正处在日历的关键时刻,我需要在时间上开始前进和后退。这一周、一个月来,我都很难做到这一点。就白天的景色而言,还不错 这是我今天的代码Php 计算更改周和月的开始和结束?,php,sql,date,time,calendar,Php,Sql,Date,Time,Calendar,目前,我正在使用jQuery日历插件来显示我构建的日历。所有数据都是使用PHP从SQL数据库中填写的。我正处在日历的关键时刻,我需要在时间上开始前进和后退。这一周、一个月来,我都很难做到这一点。就白天的景色而言,还不错 这是我今天的代码 function startTime() { $today = getdate(); $startTime = mktime(8, 0, 0, $today["mon"], $today["mday"]+$_SESSION['number'], $tod
function startTime() {
$today = getdate();
$startTime = mktime(8, 0, 0, $today["mon"], $today["mday"]+$_SESSION['number'], $today["year"]);}
然后,我将$startTime
传递到另一个发出SQL请求的函数中<代码>$\u会话[
“number']如果以前没有设置过,则设置为0,否则根据用户点击的是下一个还是上一个,我会添加1或减去1endTime()
几乎是相同的函数
如果可能的话,我只需要更改我的startTime()
和endTime()
函数
下面是计算日/周/月的凌乱且未经测试的代码(我们的服务器已停机)
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上搜索了这个问题的解决方案,但还没有找到。如果您在获取代码时遇到问题,请在以后的代码审查中使用。我将使用
strotime
而不是mktime
,并生成一个同时返回开始和结束时间的函数:
function getTimes($type) {
$end_number = $_SESSION['number'] + 1;
$extra = '-1 day';
if ($type == "day") {
$end_number = $_SESSION['number'];
$extra = '';
$date_start = date('Y-m-d');
} elseif ($type == 'week') {
$date_start = date('Y-m-d',strtotime('now -'.date('w').' days'));
} elseif ($type == 'month') {
$date_start = date('Y-m-01');
}
$operator = '+';
if($_SESSION['number'] < 0) $operator = '';
$startTime = strtotime("$date_start 08:00:00 {$operator}{$_SESSION['number']} {$type}s");
$endTime = strtotime("$date_start 20:00:00 {$operator}{$end_number} {$type}s $extra");
return array('startTime'=>$startTime,'endTime'=>$endTime);
}
你是在找一个错误还是在找代码审查?我应该说的是,代码审查。就像我说的,我们的服务器坏了,但我几乎肯定这个月的计算是行不通的。为了修复这个月,我想出了这个方法,但我不知道strotime是否是这样工作的
$day=strotime(“+”)$\u SESSION['number']。“month-1小时”)代码>$today=getdate($day)
$endTime=mktime(8,0,0,$today[“mon”]+($_SESSION[“number”]),$today[“mday”],$today[“year”])谢谢你,我不会再犯同样的错误了
function startTime($type) {
$times = getTimes($type);
return $times['startTime'];
}
function endTime($type) {
$times = getTimes($type);
return $times['endTime'];
}