Date 类別
Date 类別是一系列與日期協作的輔助函式。與 PHP 的 DateTime 类別相反,
Fuel 的 Date 类別對 i18n 有完整的支援。你也可以使用 Date 类別的時區轉換。
forge($timestamp = null, $timezone = null)
forge 方法回傳一个新的 Date 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$timestamp |
null
|
要設定給 Date 物件的時間戳記 |
$timezone |
null
|
時間所設定的時區 |
|
回傳 |
Fuel\Core\Date 物件 |
範例 |
print_r(Date::forge(1294176140));
// 回傳
Fuel\Core\Date Object
(
[timestamp:protected] => 1294176140
[timezone:protected] => UTC
)
|
time($timezone = null)
time 方法回傳在所給時區中的目前時間做为一个 Date 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$timezone |
null
|
時間所設定的時區 |
|
回傳 |
Fuel\Core\Date 物件 |
範例 |
print_r(Date::time());
|
display_timezone($timezone = null)
display_timezone 方法能让你全域地設定一个可被 format() 方法使用的時區,
以在系统時區當時產生輸出另一个時區。
如果你沒有傳遞參数,目前 display_timezone 会被回傳。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$timezone |
null
|
要被用於在非系统時區中格式化時間戳記的顯示時區。 |
|
回傳 |
混合,null、或目前顯示時區如果沒有參数被傳遞。 |
範例 |
// 設定顯示時區为 'America/Lima'
Date::display_timezone('America/Lima');
|
create_from_string($input, $pattern_key = 'local')
create_from_string 建立一个來自具名的日期字串格式或一个模式的
Date 物件。
此函式为 i18n 用途使用 strptime()。
然而,該方法無法在 Windows 主機上使用,在这種情況下 strtotime()
被用來取代且模式会被忽略。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$input |
必要 |
要使用的日期字串 |
$pattern_key |
"local" |
要使用的模式鍵(見 config/date.php)或直接一个 strptime() 模式 |
|
回傳 |
Fuel\Core\Date 物件 |
範例 |
print_r(Date::create_from_string("01/04/2011" , "us"));
// 回傳
Fuel\Core\Date Object
(
[timestamp:protected] => 1322956800
[timezone:protected] => UTC
)
|
range_to_array($start, $end, $interval = '+1 Day')
range_to_array 轉換一个日期範圍为一个日期物件的陣列
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$start |
必要 |
開始日期,不是一个 Date 物件就是一个時間戳記 |
$end |
必要 |
結束日期,不是一个 Date 物件就是一个時間戳記 |
$interval |
"+1 Day" |
要建立一个 Date 物件的時間間隔 |
|
回傳 |
陣列 |
範例 |
$start = time();
$end = $start + 604800; // 加 1 週
print_r(Date::range_to_array($start, $end, "+2 days"));
// 回傳
Array
(
[0] => Fuel\Core\Date Object
(
[timestamp:protected] => 1294181818
[timezone:protected] => UTC
)
[1] => Fuel\Core\Date Object
(
[timestamp:protected] => 1294354618
[timezone:protected] => UTC
)
[2] => Fuel\Core\Date Object
(
[timestamp:protected] => 1294527418
[timezone:protected] => UTC
)
[3] => Fuel\Core\Date Object
(
[timestamp:protected] => 1294700218
[timezone:protected] => UTC
)
)
|
days_in_month($month, $year = null)
days_in_month 回傳任何指定年、月份的天数
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$month |
必要 |
要使用的月份 |
$year |
null
|
要使用的年份(預設是目前年份) |
|
回傳 |
整数 |
範例 |
echo Date::days_in_month(2); // 28
echo Date::days_in_month(2, 2000); // 29
|
time_ago($timestamp, $now, $period)
time_ago 方法回傳一个格式化的時間差。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$timestamp |
必要 |
UNIX 時間戳記 |
$now |
選擇性 |
要進行比較的 UNIX 時間戳記,如果沒給或为空,会使用目前時間 |
$period |
選擇性 |
答案回傳的時間跨度,可能的值是 'second'、'minute'、'hour'、'day'、'week'、'month'、'year' 和 'decade'。如果沒有指定,会回傳最大的可能值 |
|
回傳 |
字串 |
範例 |
echo Date::time_ago(strtotime("01 January 2012")); // 1 months ago(當在 February 2012 時)
echo Date::time_ago(strtotime("12 April 1964"), strtotime("01 March 2012")); // 5 decades ago
echo Date::time_ago(strtotime("12 April 1964"), strtotime("01 March 2012"), 'year'); // 48 years ago
|
format 方法回傳一个指定模式鍵的格式化日期。
模式被定義在 fuel/core/config/date.php 配置档案 - 你可以藉由在
app/config 建立一个类似的档案來添加你自己的模式。
此方法为 strftime()
函式使用模式取代 date() ,以允許 i18n。
如果你沒有傳遞一个時區,當格式化結果時,目前 Date 物件的設定時區将被使用。預設情況下,
是系统時區,除非你有藉由呼叫 set_timezone() 方法修改它。你也可以傳遞
true ,这将造成全域的 display_timezone 被使用。
你可以使用 display_timezone 以全域設定一个要轉換到的時區,例如,
當一个使用者已登入,從一个使用者个人設定。这将能让所有日期在使用者本地時區裡被顯示。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$pattern_key |
"local" |
要使用的模式鍵(見 config/date.php) |
$timezone |
null |
當產生格式化輸出時要使用的時區 |
|
回傳 |
字串 |
範例 |
// 如果系统時間是 UTC,这将回傳 "01/04/2011 21:22"
echo Date::forge(1294176140)->format("%m/%d/%Y %H:%M");
// 設定時區为 "Europe/Amsterdam"(在一月是 GMT+1),这将回傳 "01/04/2011 22:22"
echo Date::forge(1294176140)->set_timezone('Europe/Amsterdam')->format("%m/%d/%Y %H:%M");
// 設定全域的顯示時區为 "Europe/Amsterdam"
Date::display_timezone('Europe/Amsterdam');
// 这也将回傳 "01/04/2011 22:22"
echo Date::forge(1294176140)->format("%m/%d/%Y %H:%M", true);
|
get_timestamp()
get_timestamp 方法回傳 Date 物件的時間戳記
靜態 |
否 |
回傳 |
整数 |
範例 |
echo Date::forge(1294176140)->get_timestamp(); // 1294176140
|
get_timezone()
get_timezone 方法回傳 Date 物件的時區
靜態 |
否 |
回傳 |
字串 |
範例 |
echo Date::forge(1294176140, "Europe/London")->get_timezone(); // Europe/London
|
get_timezone_abbr($display_timezone = false)
get_timezone_abbr 方法回傳 Date 物件時區設定的時區縮寫,或顯示時區的時區縮寫。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$display_timezone |
布林 |
如果为 true,全域的 display_timezone 将取代 Date 物件的時區設定 |
|
回傳 |
字串 |
範例 |
echo Date::forge(1294176140, "Europe/London")->get_timezone_abbr(); // 回傳 "GMT"
echo Date::forge(1294176140, "Europe/Amsterdam")->get_timezone_abbr(); // 回傳 "CET"
// 設定全域顯示時區为 "Europe/Amsterdam"
Date::display_timezone('Europe/Amsterdam');
echo Date::forge(1294176140)->get_timezone_abbr(true); // 也回傳 "CET"
|
set_timezone($timezone)
set_timezone 方法設定 Date 物件的時區
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$timezone |
必要 |
要設定給 Date 物件的時區 |
|
回傳 |
字串 |
範例 |
echo Date::forge(1294176140)->set_timezone("America/Chicago")->get_timezone(); // America/Chicago
|