oomengnan 发表于 2017-8-6 17:35:53

学校教学周计算问题

本人在开发学校用的OA系统,大家都知道学校使用的时间是教学周。
我在实现的时候使用以下函数(model)进行教学周的计算

        /* 计算 第几周星期几 是 某年某月某日 */
        public function get_datetime($week, $weekday) {
                $arr            = explode('-', $this->startdate());
    $year   = $arr;
    $month    = $arr;
    $day      = $arr;
    $unixtime = mktime(0,0,0,$month,$day,$year)+(($week-1)*7+$weekday)*86400;
                return date('Y-m-d',$unixtime);
        }

        /* 计算 某年某月某日 是 开学第几天 */
        private function get_schooldays($date = NULL) {
                if (is_null($date)) {
                        $date = $this->enddate();
                }
                $startdate = $this->startdate();
                $start = strtotime($startdate);
                $end   = strtotime($date);
                $days= round(($end-$start)/3600/24);
                return $days;
        }

        /* 计算 某年某月某日 是 第几教学周 */
        public function get_schoolweek($date = NULL) {
                return intval($this->get_schooldays($date)/7) + 1;
        }



我使用的平台是 win7 + wamp 套件。
现在的问题是,上述函数能够准确计算教学周,但是不稳定,有时候刷新页面会显示PHP报错或者是 -2 周。
请问怎么到底哪里出了问题?应该怎么改进?

oomengnan 发表于 2017-8-13 13:49:18

Hex 发表于 2017-8-8 11:01
哦哦,没报错那就是算法有问题。。。

原因查明,我把model函数的一些结果var_dump显示
竟然发现
$today = date("Y-m-s");
var_dump($today);
显示的是未来的日期,到时后续的操作mysql sql语句出错。
但是为啥 date() 函数会算错日期呢?

oomengnan 发表于 2017-8-7 12:16:02

Michael锐生 发表于 2017-8-7 10:50
你还不如直接贴错误,这个看起来没啥问题,还有$this->startdate()转时间戳方式为什么要用两种?另外如果是 ...

我什么都没有改动,就是按F5刷新浏览器,刷的密,就会出错。
$this->startdate()是返回当前学期的第一天的日期。

Hex 发表于 2017-8-21 10:27:14

oomengnan 发表于 2017-8-19 10:00
但是实际效果就是这样,
减少调用次数,就没出现问题了。可能是wampp套件发傻吧。 ...

。。。要相信科学,你这里肯定有深层次原因,有兴趣你可以查一查。

Michael锐生 发表于 2017-8-7 10:50:04

你还不如直接贴错误,这个看起来没啥问题,还有$this->startdate()转时间戳方式为什么要用两种?另外如果是开学前两周,那-2也是没错的

Hex 发表于 2017-8-7 11:16:24

对,把 PHP 错误信息显示出来,然后贴出来才能知道为什么。

Hex 发表于 2017-8-7 13:23:17

oomengnan 发表于 2017-8-7 12:16
我什么都没有改动,就是按F5刷新浏览器,刷的密,就会出错。
$this->startdate()是返回当前学期的第一天 ...

错误是啥呢,贴出来看看啊~~

oomengnan 发表于 2017-8-8 09:46:29

Hex 发表于 2017-8-7 13:23
错误是啥呢,贴出来看看啊~~

好像没有明显报错,
例如我这个页面显示整个学期是8个教学周,
刷新页面一看有时候就变了20个教学周。

Hex 发表于 2017-8-8 11:01:26

oomengnan 发表于 2017-8-8 09:46
好像没有明显报错,
例如我这个页面显示整个学期是8个教学周,
刷新页面一看有时候就变了20个教学周。 ...

哦哦,没报错那就是算法有问题。。。

oomengnan 发表于 2017-8-13 14:53:52

Hex 发表于 2017-8-8 11:01
哦哦,没报错那就是算法有问题。。。
问题已经解决,我减少 date() 函数的调用次数,终于不再出现错误了。

Hex 发表于 2017-8-14 11:07:23

oomengnan 发表于 2017-8-13 14:53
问题已经解决,我减少 date() 函数的调用次数,终于不再出现错误了。

这个很奇怪,减少调用次数?你的时区设置正确了吗?
页: [1] 2
查看完整版本: 学校教学周计算问题