文章

顯示從 九月, 2007 起發佈的文章

ubuntu linux提供的螢幕解析度選項太少…怎麼會這樣

昨天筆者新電腦灌好了ubuntu,發現怎麼解析度那麼少(只給到1024*768),明明顯卡螢幕都OK的,求問了一下google大神,有人建議修改/etc/X11/xorg.conf檔案,但我懶、而且也怕怕,所以我在終端機執行以下指令:
sudo dpkg-reconfigure xserver-xorg這指令會一步一步問答,全部重設一次(包括鍵盤…等等設定),就像一開始在安裝過程會問你的鍵盤layout等等…就照情況選擇就OK了,會有一個選擇螢幕解析度,按空白鍵把要的幾個解析度打星號即可。

最後重開機 ,或Ctrl+Alt+Backspace重啟X應該就解決了

用PHP算出兩日期差幾日 (倒數計日)

用Date函數格式化日期的時候 (省略參數→目前時間)
PHP從參數(或省略參數時從系統中)得到一個整數這個整數是從Unix系統零時(1970年1月1日凌晨) (有人說Unix時期、總之就是設定給Unix的誕辰日) ~~到指定時間點的累積總秒數 (叫epoch day,以下用timestamp表示)
例如:1970年1月2日下午3點半的timestamp等於142200 (39小時+30分鐘=140400+1800)
PHP下可以用mktime來產生指定日期時間的timestamp (請自行參考函式庫)
☆注意:
Unix系統零時是在格林威治時間(GMT)下,台灣的時區是GMT+8,也就是早GMT 8小時
時區設定在台灣的主機,使用mktime的PHP函數 產生1970.1.1 0:00:00的timestamp將小於0!!! (當時GMT還在1969.12.31 16:00:00)
換句話說,產生1970.1.1 8:00:00的timestamp將等於0 (GMT正好到1970.1.1 0:00:00)
這麼說...用mktime產生目前時間的timestamp都會差8小時了!!
這時可以用gmmktime函數(將參數給的時間視為GMT時間而非該時區的時間) 直接產生GMT的timestamp
但是gmmktime在時區為台灣的主機,仍無法產生1970.1.1 8:00:00以前的timestamp (這我就想不通為什麼了...錯誤訊息:[Warning: gmmktime(): Windows does not support negative values for this function] 不巧手邊也沒Linux主機可以測試....)知道timestamp是總秒數了...那如果把兩日期的timestamp相減,得到的不就是兩日期的差異總秒數了嗎!?
要算差異的天數的話,那就是除以1天的秒數囉 (1天=86400秒)筆者這支程式取得timestamp的函數用strtotime,省得時分秒的問題 (strtotime使用方法請自行參考函式庫) 但是取得的是主機的時區...不過因為不可能遇到1970.1.1前8小時的情況(除非故意的)...所以筆者就不予考慮...
照這個想法寫的程式如下: (範例是今年的統一入學測驗日,是5月20號)$today = strtotime(date…

用PHP算出本月的第一天是星期幾

筆者曾經用Date函數取得今日的日期跟星期,再往前推算,程式碼要寫好幾行,至少五行跑不掉。
最近筆者想到了一個更好的解決辦法
這是Date函數的語法:
string date (string format [, int timestamp])
我們可以直接指定timestamp再取出格式化時間,timestamp的觀念在上一篇「倒數計日」已經講的很清楚了。
而取得星期的格式參數如下:
D:取得英文簡寫(如Wed/Fri等)
l(小L):取得英文名稱(如:Friday/Sunday等)
w:取得數字代表:0=星期日 2=星期二…
如果我們這樣寫
date("w");我們將會得到5 (筆者寫這篇文是在禮拜五)
那如果我利用指定timestamp的方式,指定到這個月的第一天不就得了?!
程式碼如下:
date("l", strtotime(date("Y-n-1")));
為了讓大家看的更清楚,筆者分解一下動作:(假設今日2006-3-17 Friday)
date("l", strtotime(date("Y-n-1")));

date("l", strtotime("2006-3-1"));
date("l", 1141142400); //這串數字是timestamp,請參考這一篇

"Wednesday"