日期輔助函數(shù)
日期輔助函數(shù)的文件涵蓋了一些用于輔助日期數(shù)組操作的函數(shù)。
裝載本輔助函數(shù)
本輔助函數(shù)的裝載通過如下代碼完成:
$this->load->helper('date');
可用的函數(shù)如下:
now()
返回當前的 Unix 時間戳,根據(jù)你的config文件中"time reference"設定返回服務器當前時間或者GMT時間。如果你沒有計劃使用GMT時間(通常是你準備在站點中允許用戶選擇時區(qū)設置),則此函數(shù)跟PHP中time()函數(shù)等同。
mdate()
這個函數(shù)跟PHP的內(nèi)部函數(shù)date()幾乎是一樣的,區(qū)別在于,這個函數(shù)允許你使用在每個代碼字母前帶有百分號“%”的MySQL時間表達形式: %Y %m %d 等。
采用這種方式處理時間數(shù)據(jù)的優(yōu)點在于,避免了你在使用date()函數(shù)時經(jīng)常擔心漏掉那些非時間的字符的問題。例如:
$datestring = "Year: %Y Month: %m Day: %d - %h:%i %a";
$time = time();
echo mdate($datestring, $time);
如果第二參數(shù)中不包含時間戳則使用當前時間。
standard_date()
允許你從一些標準格式生成日期字符串。例子:
$format = 'DATE_RFC822';
$time = time();
echo standard_date($format, $time);
第一個參數(shù)必須包含格式,第二個參數(shù)必須使用unix時間戳。
支持格式:
常量 | 描述 | 例子 |
---|---|---|
DATE_ATOM | Atom | 2005-08-15T16:13:03+0000 |
DATE_COOKIE | HTTP Cookies | Sun, 14 Aug 2005 16:13:03 UTC |
DATE_ISO8601 | ISO-8601 | 2005-08-14T16:13:03+00:00 |
DATE_RFC822 | RFC 822 | Sun, 14 Aug 05 16:13:03 UTC |
DATE_RFC850 | RFC 850 | Sunday, 14-Aug-05 16:13:03 UTC |
DATE_RFC1036 | RFC 1036 | Sunday, 14-Aug-05 16:13:03 UTC |
DATE_RFC1123 | RFC 1123 | Sun, 14 Aug 2005 16:13:03 UTC |
DATE_RFC2822 | RFC 2822 | Sun, 14 Aug 2005 16:13:03 +0000 |
DATE_RSS | RSS | Sun, 14 Aug 2005 16:13:03 UTC |
DATE_W3C | World Wide Web Consortium | 2005-08-14T16:13:03+0000 |
local_to_gmt()
將unix時間戳轉換為GMT。例子:
$now = time();
$gmt = local_to_gmt($now);
gmt_to_local()
輸入一個GMT的unix時間戳,根據(jù)時區(qū)、夏時制轉換為本地時間戳。例子:
$timestamp = '1140153693';
$timezone = 'UM8';
$daylight_saving = TRUE;
echo gmt_to_local($timestamp, $timezone, $daylight_saving);
注意:時區(qū)列表請參考本頁末。
mysql_to_unix()
將MySQL時間戳轉換為unix時間戳。例子:
$mysql = '20061124092345';
$unix = mysql_to_unix($mysql);
unix_to_human()
將unix時間戳轉為如下人類可閱讀格式:
YYYY-MM-DD HH:MM:SS AM/PM
本函數(shù)可用于需要作為表單提交的地方。
時間可以設置為含或者不含秒數(shù),而且可以設為歐洲或美國格式。如果只有時間戳,則格式化為不含秒數(shù)的美國格式。例子:
$now = time();
echo unix_to_human($now); // U.S. time, no seconds
echo unix_to_human($now, TRUE, 'us'); // U.S. time with seconds
echo unix_to_human($now, TRUE, 'eu'); // Euro time with seconds
human_to_unix()
跟上面函數(shù)相反,這個函數(shù)將“人類”的時間表示方式(如,2008-12-31 04:38 PM)轉換成unix的時間表示方式(如:1230713116)。這個函數(shù)在你接收一個從表單提交而來的“人類”的時間格式時會很有用。如果傳遞給這個函數(shù)的參數(shù)不是如上所說的“人類”時間格式的字符串,哪么它將返回FALSE (boolean)。例如:
$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);
timespan()
格式化unix時間戳使其看起來像這樣:
1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes
第一參數(shù)必須是unix時間戳,第二個參數(shù)是一個大于第一參數(shù)的時間戳。如果第二參數(shù)空缺,則使用當前時間。這個函數(shù)的用途通常是計算過去某一個時間點到現(xiàn)在的時間之間的時間差。例如:
$post_date = '1079621429';
$now = time();
echo timespan($post_date, $now);
Note:由本函數(shù)生成的文字可以在以下語言文件中找到: language/<your_lang>/date_lang.php
days_in_month()
對給出的年月值返回天數(shù)。這個函數(shù)的實現(xiàn)已經(jīng)考慮了存在閏年和平年的情況。例如:
echo days_in_month(06, 2005);
如果省略第二參數(shù)則使用當前年。
timezones()
根據(jù)給定的時區(qū)參考(有效時區(qū)列表請參見下面的“時區(qū)參考”)返回跟UTC的相差值。
echo timezones('UM5');
本函數(shù)最有用是在使用timezone_menu()函數(shù)時.
timezone_menu()
生成一個時區(qū)下拉選單,像這樣:

在你需要向你的網(wǎng)站會員提供他們所在時區(qū)的設置選項時這個選單會很有用的。
第一個參數(shù)讓你設置選單的“已選”狀態(tài)。例如,你想將美國西部標準時間設為默認時間,你可以這樣做:
echo timezone_menu('UM8');
要得到這個選單的各個具體值,請看下面的時區(qū)參考表。
第二個參數(shù)讓你為選單設置CSS的類名。
注意:上面選單里的每個條目可以在這個文件語言文件里找到: language/<your_lang>/date_lang.php
時區(qū)參考
下面的表說明了各個時區(qū)值以及該值對應的地點
時區(qū) | 位置 |
---|---|
UM12 | (UTC - 12:00) 埃尼威托克, 夸賈林環(huán)礁 |
UM11 | (UTC - 11:00) 諾姆, 中途島, 薩摩亞 |
UM10 | (UTC - 10:00) 夏威夷 |
UM9 | (UTC - 9:00) 阿拉斯加 |
UM8 | (UTC - 8:00) 太平洋時間(美國西部標準時間) |
UM7 | (UTC - 7:00) 山地時間(美國中西部時間) |
UM6 | (UTC - 6:00) 美國中部時間, 墨西哥城 |
UM5 | (UTC - 5:00) 美國東部時間, 波哥大, 利馬, 基多 |
UM4 | (UTC - 4:00) 大西洋時間, 加拉加斯, 拉巴斯 |
UM25 | (UTC - 3:30) 紐芬蘭 |
UM3 | (UTC - 3:00) 巴西, 布宜諾斯艾利斯, 喬治城, 福克蘭群島 |
UM2 | (UTC - 2:00) 中部大西洋時間, 亞森欣島, 圣赫勒拿 |
UM1 | (UTC - 1:00) 亞速爾群島, 佛得角群島 |
UTC | (UTC) 卡薩布蘭卡, 都柏林, 愛丁堡, 倫敦, 里斯本, 蒙羅維亞 |
UP1 | (UTC + 1:00) 柏林, 布魯塞爾, 哥本哈根, 馬德里, 巴黎, 羅馬 |
UP2 | (UTC + 2:00) 加里寧格勒, 南非, 華沙 |
UP3 | (UTC + 3:00) 巴格達, 利雅得, 莫斯科, 內(nèi)羅畢 |
UP25 | (UTC + 3:30) 德黑蘭 |
UP4 | (UTC + 4:00) 阿布扎比, 巴庫, 馬斯喀特, 第比利斯 |
UP35 | (UTC + 4:30) 喀布爾 |
UP5 | (UTC + 5:00) 伊斯蘭堡, 卡拉奇, 塔什干 |
UP45 | (UTC + 5:30) 孟買, 加爾各答, 馬德拉斯, 新德里 |
UP6 | (UTC + 6:00) 阿拉木圖, 哥倫巴, 達卡 |
UP7 | (UTC + 7:00) 曼谷, 河內(nèi), 雅加達 |
UP8 | (UTC + 8:00) 北京, 香港, 佩斯, 新加坡, 臺北 |
UP9 | (UTC + 9:00) 大阪, 札幌, 漢城, 東京, 雅庫茨克 |
UP85 | (UTC + 9:30) 阿德萊德, 達爾文 |
UP10 | (UTC + 10:00) 墨爾本, 巴布亞新幾內(nèi)亞, 悉尼, 海參崴 |
UP11 | (UTC + 11:00) 馬加丹, 新喀里多尼亞, 所羅門群島 |
UP12 | (UTC + 12:00) 奧克蘭, 惠靈頓, 斐濟, 馬紹爾群島 |
?