文章

目前顯示的是 九月, 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號) $

用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"