English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

請問下列自訂函數為捨麼出來數值會不一樣??echo today(1973,09,09);最後出來 卻是民國62年11月30日星期四???請問是程式哪裡有錯嗎?還請高手解答^^

2006-11-15 09:07:38 · 3 個解答 · 發問者 心一點靈 6 in 電腦與網際網路 程式設計

恩恩 冷泡茶你說的我知道
可是如果換成06 06就可以 (或是其他0開頭的)
這又是為捨麼呢?
而且在date(m,d)函數中
m參數的範圍是:01 through 12
d參數的範圍是:01 to 31
都是可以以0為開頭的耶~

2006-11-15 18:10:33 · update #1

3 個解答

謝謝冷泡茶邀約
echo date("y-m-d",mktime(0,0,0,09,08,2006));
echo "\n";
echo date("y-m-d",mktime(0,0,0,0,0,2006));
echo "\n";
是一樣的. (而且不管在 php4 or php5)
原因是 mktime 的參數說明
範例 2. Last day of next month
The last day of any given month can be expressed as the "0" day of the next month, not the -1 day.

echo date("y-m-d",mktime(0,0,0,"08-1",0,2006));
=> 傳入 "08-1" 答案是 06-7-31
echo date("y-m-d",mktime(0,0,0,07-1,0,2006));
=> 傳入 06-1 答案是 06-5-31
echo date("y-m-d",mktime(0,0,0,08-1,0,2006));
=> 傳入 -1 答案是 05-10-31
所以問題在 php 對 01 .. 07 都會視做 1 .. 7, 08 之後就當做 0 解釋
而非 mktime 的關係, 可能要要上 php 去問一問了.

2006-11-16 10:03:23 補充:
歸納所得 PHP 0 開頭的數字是用 8 進位01->102->2..07->7010 -> 8011->9014->12018-> 01020->16所以 8 跟 9 都直接 truncate 掉

2006-11-16 13:18:00 補充:
冷泡茶客氣了. 我也是手邊沒有手冊的人,酷走一語道破, 早知道晚一點回答就不用 try 半天了! :P

2006-11-16 04:46:54 · answer #1 · answered by Chiu 4 · 0 0

剛剛測試過了,的確如此,我只用一行測試
echo date("m-d",mktime(0,0,0,09,08,2006));
在09的位置跟08的位置也確定了01-07都正常
就是08-09會有問題,如果寫成以下兩種方式就又都正常
echo date("m-d",mktime(0,0,0,"09","08",2006));
echo date("m-d",mktime(0,0,0,9,8,2006));

2006-11-16 12:47:33 補充:
希望各位php的前輩們如果知道這個原因是什麼
煩請不吝告知,在下也很想知道是什麼原因

2006-11-16 12:52:14 補充:
非常謝謝 蚯蚓 及 酷走 解這個疑惑,在下實在壓根兒沒去想到8進位的問題
因為平常都沒去應用到,一下子都卡住了...
個人所答非文森特_柯里昂原始所問原意,所以先將刪除之,雖然有些沒禮貌,清多多包涵。

2006-11-16 07:46:59 · answer #2 · answered by 冷泡茶 6 · 0 0

問題的中心不在 mktime 這個函數,
08 , 09 本身是 8進位的用法,
如果要用10進位的話,前面不能有 0
如果要用16進位的話,前面加上 0x
如果藥用8進位的話,前面加上0

做個實驗:
echo "1+ 08 = ". 1+08; // 答案不會等於 9 因為 08 是代表八進位而且這個數字不存在所以 08 會變成0

?>

2006-11-16 18:35:47 補充:
唉啊啊 ~ 太客氣了,yahoo 知識裡 php 這個小地方大家都挺客氣的,感覺挺溫暖的,而且臥虎藏龍,高手雲集,小弟往後還有很多地方要大家的幫忙,大家都挺熱心的,看起來我是不用愁了.不瞞各位,小弟花了好久的時間在弄一個類似smarty的東西,並且用自己做的引擎發展bbs,等相關東西,現在還在努力中,到時候若有問題還請大家多多幫忙~

2006-11-16 05:01:26 · answer #3 · answered by 小呆 3 · 0 0

fedest.com, questions and answers