給出以下信息:PHP的日期功能:從weeknumber轉換回一個月
- 年份:2012
- Weeknumber:4
- DAYNAME:TUE
我怎麼能轉換這個到2012-01-12(YYYY-MM-DD)使用PHP日期函數的有效日期?
感謝名單
給出以下信息:PHP的日期功能:從weeknumber轉換回一個月
我怎麼能轉換這個到2012-01-12(YYYY-MM-DD)使用PHP日期函數的有效日期?
感謝名單
的DateTime
類不能做到這一點,但功能strptime
即可。
$d = strptime('TUE 4 2012', '%a %W %Y');
var_dump($d);
即返回一個數組:基於0
array
'tm_sec' => int 0
'tm_min' => int 0
'tm_hour' => int 0
'tm_mday' => int 24
'tm_mon' => int 0
'tm_year' => int 112
'tm_wday' => int 2
'tm_yday' => int 23
'unparsed' => string '' (length=0)
注意tm_year
包含的年數自1900年以來和tm_month
,不是基於1的。所以這代表2012-01-24,這是正確的。
很好的答案..我不知道這個功能。所以我寫了一個腳本:D檢查出來...... – 2012-04-21 16:48:39
使用此功能:
function get_date($year,$week,$day,$start_sunday=false){
$day_array = array('Mon'=>1,'Tue'=>2,'Wed'=>3,'Thu'=>4,'Fri'=>5,'Sat'=>6,'Sun'=>($start_sunday?0:7));
$month_array = array(31,($year%4==0?29:28),31,30,31,30,31,31,30,31,30,31);
$week *= 7;
$month = 1;
for($i=0;$i<count($month_array);$i++){
if($week-$month_array[$i]<=0){
break;
}
$week -= $month_array[$i];
$month++;
}
$format = "$year $month $week";
$date = date_create_from_format("Y m j",$format);
$date_num = date_format($date,"D");
$curr = $day_array[ucfirst(strtolower($day))]-$day_array[$date_num];
$got_date = strtotime("$curr ".($curr==1||$curr==-1?"day":"days"),strtotime(date_format($date,"Y-m-j")));
return $got_date;
}
其中$start_sunday
應該true
如果本週sunday
$year
是今年開始 $week
是週數 $day
短星期名iemon,週二,週三,....
這個函數會給你一個日期形式th給定的格式。
Enjoy............
-1因爲它會讓我的眼睛受傷。並且有更多的規則來計算它是否是閏年。而不是使用內置函數來完成這項工作。 – PeeHaa 2012-04-22 00:45:44
是的,我知道有更多的規則第100年:P – 2012-04-22 10:52:34
參見[DateTime對象(http://il.php.net/manual/en/book.datetime.php) – 2012-04-21 15:52:48
請問你的鍵盤巴掌你,如果你查了一下PHP的文檔? – noli 2012-04-21 15:56:19
星期編號是[ISO周](http://en.wikipedia.org/wiki/ISO_8601#Week_dates)? – salathe 2012-04-21 15:56:51