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

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