怎么计算开学第几周php,如何计算开学第几周, 要求每年通用
其實是要精確到周即可, 即給定當前時間, 知道是本學期的開學第幾周. 問題的關鍵好像是沒找到規律, 我現在用的是如下代碼(php), 準確度不夠好:
function teachweek ($date){
$timestamp=strtotime($date);
if (date('m', $timestamp)>=9){
return date('W', $timestamp)-35;
}elseif(date('m', $timestamp)<=2){
return date('W', $timestamp)+18;
}else{
return date('W', $timestamp)-7;
}
}
回復內容:
其實是要精確到周即可, 即給定當前時間, 知道是本學期的開學第幾周. 問題的關鍵好像是沒找到規律, 我現在用的是如下代碼(php), 準確度不夠好:
function teachweek ($date){
$timestamp=strtotime($date);
if (date('m', $timestamp)>=9){
return date('W', $timestamp)-35;
}elseif(date('m', $timestamp)<=2){
return date('W', $timestamp)+18;
}else{
return date('W', $timestamp)-7;
}
}
不準確的問題應該出在35、18這幾個數字上,另外,如果9月1日是星期六或者星期日的話,也不能算作第一周,所以,可以先判斷當年9月1日是在第幾周
$thisyear=date('Y',strtotime($date));
$ondate=date('W',strtotime("1 September $thisyear"));
這樣,第四行就能替換成
return date('W', $timestamp)-$ondate+1;
是否+1需要通過對9月1日是否為周六/日判斷確定,這兒具體就不寫了;
如果日期是年初寒假之前,還需要跨年計算去年9月1日到12月31日的周數
$lastyear=date('Y',strtotime($date))-1;
$lastyearweeks=date('W',strtotime("31 December $lastyear"))-date('W',strtotime("1 September $lastyear"))+1;
同樣的,是否+1需要通過對9月1日是否為周六/日判斷確定,這樣,第六行就能替換成
return (date('W', $timestamp)%53)+$lastyearweeks;
同理,確定第二學期開學日期的話,類似思路修改最后一個retrun里的7,即可判斷日期是第二學期的第幾周
你們都被表面需求迷惑了,如果是問當前日期是開學日期的第幾個月,樓主和一樓的邏輯雖然不完全對但是修改一下還是OK的,可是對于第幾周就沒必要了,因為問題的關鍵在于7天是一周。我的偽碼如下
$startDate = 開學日期; //如2016-02-16
$startDay = 開學這天是星期幾; //如3表示周3
$limitDay = 今天是自1970年以來第幾天 - 開學日期是自1970年以來的第幾天; //比如55天
周日當每周的第一天了,此題中考慮這個問題沒什么意義)
$weekNumber = ceil(($limitDay + $startDay) / 7); //因為開學第一周可能不是整周,所以補上失去的天數
$weekNumber就是你要的了
感謝大家的貢獻. 我覺得可以從下面的表格作出分析(#注):
年份
(春)上課日期
(春)教學周數
暑假開始
(秋)上課日期
(秋)教學周數
寒假開始
除夕:周幾
2010
3/1
21
7/25
8/30
20
1/15
2/2:3
2011
2/21
18
6/25
8/29
20
1/15
1/22:7
2012
2/13
18
6/17
9/3
21
1/26
2/9:6
2013
2/25
18
6/29
9/2
20
1/18
1/30:4
2014
2/17
18
6/21
9/1
22
1/31
2/18:3
2015
3/2
18
7/4
8/31
21
1/23
2/8:1
2016
2/22
18
6/25
8/29
通過分析發現, 也許我們可以先分析什么時候過年, 然后暑假由過年前后各兩周決定, 這里還需要些細化, 例如還和過年是星期幾有關.
秋季開學由離9/1號最近的周一決定?
春季由開學日期(由過年決定)?
(#注: 統計結果可能不是非常正確, 大家可以復查.)
這東西還需要用算法做,或者算法能做出來么?直接把校歷的時間錄到數據庫里就完了么
校歷出一次管一年,也就是說1年錄一次就可以,說白了,根本就沒有規律,這個是教務處說了算的
真以為全國高校都9月1號開學 過年都讓過元宵節啊 我在某985高校從來就沒有在家過完元宵過
相關標簽:php
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的怎么计算开学第几周php,如何计算开学第几周, 要求每年通用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用matlab画三维凸起,求助大牛MAT
- 下一篇: php files上传错误,php-PH