CodeIgniter 日期輔助函數(shù)

2018-07-21 15:43 更新

日期輔助函數(shù)

日期輔助函數(shù)文件包含了一些幫助你處理日期的函數(shù)。

加載輔助函數(shù)

該輔助函數(shù)通過下面的代碼加載:

$this->load->helper('date');

可用函數(shù)

該輔助函數(shù)有下列可用函數(shù):

now([$timezone = NULL])

參數(shù):

  • $timezone (string) -- Timezone

返回: UNIX timestamp

返回類型: int

根據(jù)服務(wù)器的本地時(shí)間,以及一個(gè) PHP 支持的時(shí)區(qū)參數(shù)或配置文件中的 "基準(zhǔn)時(shí)間" 參數(shù)返回當(dāng)前時(shí)間的 UNIX 時(shí)間戳, 如果你不打算設(shè)置 "基準(zhǔn)時(shí)間" (如果你的站點(diǎn)允許用戶設(shè)置他們自己的時(shí)區(qū),你通常需要設(shè)置這個(gè)), 該函數(shù)就和 PHP 的 time() 函數(shù)沒什么區(qū)別。

echo now('Australia/Victoria');

如果沒有指定時(shí)區(qū),該函數(shù)將使用 time_reference 參數(shù)調(diào)用 time() 函數(shù)。

mdate([$datestr = ''[, $time = '']])

參數(shù):

  • $datestr (string) -- Date string
  • $time (int) -- UNIX timestamp

返回: MySQL-formatted date

返回類型: string

該函數(shù)和 PHP 的 date() 函數(shù)一樣, 但是它支持 MySQL 風(fēng)格的日期格式,在代碼之前使用百分號(hào),例如:%Y %m %d

使用這個(gè)函數(shù)的好處是你不用關(guān)心去轉(zhuǎn)義那些不是日期代碼的字符,如果使用 date() 函數(shù)時(shí),你就要這么做。

例如:

$datestring = 'Year: %Y Month: %m Day: %d - %h:%i %a';
$time = time();
echo mdate($datestring, $time);

如果第二個(gè)參數(shù)沒有提供一個(gè)時(shí)間,那么默認(rèn)會(huì)使用當(dāng)前時(shí)間。

standard_date([$fmt = 'DATE_RFC822'[, $time = NULL]])

參數(shù):

  • $fmt (string) -- Date format
  • $time (int) -- UNIX timestamp

返回: Formatted date or FALSE on invalid format

返回類型: string

生成標(biāo)準(zhǔn)格式的時(shí)間字符串。

例如:

$format = 'DATE_RFC822';
$time = time();
echo standard_date($format, $time);

注解

該函數(shù)已經(jīng)廢棄,請(qǐng)使用原生的 date() 函數(shù)和 時(shí)間格式化常量 替代:

echo date(DATE_RFC822, time());

支持的格式:

Constant Description Example
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 W3C 2005-08-14T16:13:03+0000

local_to_gmt([$time = ''])

參數(shù):

  • $time (int) -- UNIX timestamp

返回: UNIX timestamp

返回類型: int

將時(shí)間轉(zhuǎn)換為 GMT 時(shí)間。

例如:

$gmt = local_to_gmt(time());

gmt_to_local([$time = ''[, $timezone = 'UTC'[, $dst = FALSE]]])

參數(shù):

  • $time (int) -- UNIX timestamp
  • $timezone (string) -- Timezone
  • $dst (bool) -- Whether DST is active

返回: UNIX timestamp

返回類型: int

根據(jù)指定的時(shí)區(qū)和 DST (夏令時(shí),Daylight Saving Time) 將 GMT 時(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([$time = ''])

參數(shù):

  • $time (string) -- MySQL timestamp

返回: UNIX timestamp

返回類型: int

將 MySQL 時(shí)間戳轉(zhuǎn)換為 UNIX 時(shí)間戳。

例如:

$unix = mysql_to_unix('20061124092345');

unix_to_human([$time = ''[, $seconds = FALSE[, $fmt = 'us']]])

參數(shù):

  • $time (int) -- UNIX timestamp
  • $seconds (bool) -- Whether to show seconds
  • $fmt (string) -- format (us or euro)

返回: Formatted date

返回類型: string

將 UNIX 時(shí)間戳轉(zhuǎn)換為方便人類閱讀的格式,如下:

YYYY-MM-DD HH:MM:SS AM/PM

這在當(dāng)你需要在一個(gè)表單字段中顯示日期時(shí)很有用。

格式化后的時(shí)間可以帶也可以不帶秒數(shù),也可以設(shè)置成歐洲或美國(guó)時(shí)間格式。 如果只指定了一個(gè)時(shí)間參數(shù),將使用不帶秒數(shù)的美國(guó)時(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([$datestr = ''])

參數(shù):

  • $datestr (int) -- Date string

返回: UNIX timestamp or FALSE on failure

返回類型: int

該函數(shù)和 unix_to_human() 函數(shù)相反,將一個(gè)方便人類閱讀的時(shí)間格式轉(zhuǎn)換為 UNIX 時(shí)間戳。 這在當(dāng)你需要在一個(gè)表單字段中顯示日期時(shí)很有用。如果輸入的時(shí)間不同于上面的格式,函數(shù)返回 FALSE 。

例如:

$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);

nice_date([$bad_date = ''[, $format = FALSE]])

參數(shù):

  • $bad_date (int) -- The terribly formatted date-like string
  • $format (string) -- Date format to return (same as PHP's date() function)

返回: Formatted date

返回類型: string

該函數(shù)解析一個(gè)沒有格式化過的數(shù)字格式的日期,并將其轉(zhuǎn)換為格式化的日期。它也能解析格式化好的日期。

默認(rèn)該函數(shù)將返回 UNIX 時(shí)間戳,你也可以提供一個(gè)格式化字符串給第二個(gè)參數(shù)(和 PHP 的 date() 函數(shù)一樣)。

例如:

$bad_date = '199605';
// Should Produce: 1996-05-01
$better_date = nice_date($bad_date, 'Y-m-d');

$bad_date = '9-11-2001';
// Should Produce: 2001-09-11
$better_date = nice_date($bad_date, 'Y-m-d');

timespan([$seconds = 1[, $time = ''[, $units = '']]])

參數(shù):

  • $seconds (int) -- Number of seconds
  • $time (string) -- UNIX timestamp
  • $units (int) -- Number of time units to display

返回: Formatted time difference

返回類型: string

將一個(gè) UNIX 時(shí)間戳轉(zhuǎn)換為以下這種格式:

1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes

第一個(gè)參數(shù)為一個(gè) UNIX 時(shí)間戳,第二個(gè)參數(shù)是一個(gè)比第一個(gè)參數(shù)大的 UNIX 時(shí)間戳。 第三個(gè)參數(shù)可選,用于限制要顯示的時(shí)間單位個(gè)數(shù)。

如果第二個(gè)參數(shù)為空,將使用當(dāng)前時(shí)間。

這個(gè)函數(shù)最常見的用途是,顯示從過去某個(gè)時(shí)間點(diǎn)到當(dāng)前時(shí)間經(jīng)過了多少時(shí)間。

例如:

$post_date = '1079621429';
$now = time();
$units = 2;
echo timespan($post_date, $now, $units);

注解

該函數(shù)生成的本文可以在語言文件 language//date_lang.php 中找到。

days_in_month([$month = 0[, $year = '']])

參數(shù):

  • $month (int) -- a numeric month
  • $year (int) -- a numeric year

返回: Count of days in the specified month

返回類型: int

返回指定某個(gè)月的天數(shù),會(huì)考慮閏年。

例如:

echo days_in_month(06, 2005);

如果第二個(gè)參數(shù)為空,將使用今年。

注解

該函數(shù)其實(shí)是原生的 cal_days_in_month() 函數(shù)的別名,如果它可用的話。

date_range([$unix_start = ''[, $mixed = ''[, $is_unix = TRUE[, $format = 'Y-m-d']]]])

參數(shù):

  • $unix_start (int) -- UNIX timestamp of the range start date
  • $mixed (int) -- UNIX timestamp of the range end date or interval in days
  • $is_unix (bool) -- set to FALSE if $mixed is not a timestamp
  • $format (string) -- Output date format, same as in date()

返回: An array of dates

返回類型: array

返回某一段時(shí)間的日期列表。

例如:

$range = date_range('2012-01-01', '2012-01-15');
echo "First 15 days of 2012:";
foreach ($range as $date)
{
    echo $date."\n";
}

timezones([$tz = ''])

參數(shù):

  • $tz (string) -- A numeric timezone

返回: Hour difference from UTC

返回類型: int

根據(jù)指定的時(shí)區(qū)(可用的時(shí)區(qū)列表參見下文的 "時(shí)區(qū)參考")返回它的 UTC 時(shí)間偏移。

例如:

echo timezones('UM5');

這個(gè)函數(shù)和 timezone_menu() 函數(shù)一起使用時(shí)很有用。

timezone_menu([$default = 'UTC'[, $class = ''[, $name = 'timezones'[, $attributes = '']]]])

參數(shù):

  • $default (string) -- Timezone
  • $class (string) -- Class name
  • $name (string) -- Menu name
  • $attributes (mixed) -- HTML attributes

返回: HTML drop down menu with time zones

返回類型: string

該函數(shù)用于生成一個(gè)時(shí)區(qū)下拉菜單,像下面這樣。

         (UTC -12:00) Baker/Howland Island         (UTC -11:00) Samoa Time Zone, Niue         (UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti         (UTC -9:30) Marquesas Islands         (UTC -9:00) Alaska Standard Time, Gambier Islands         (UTC -8:00) Pacific Standard Time, Clipperton Island         (UTC -7:00) Mountain Standard Time         (UTC -6:00) Central Standard Time         (UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time         (UTC -4:30) Venezuelan Standard Time         (UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time         (UTC -3:30) Newfoundland Standard Time         (UTC -3:00) Argentina, Brazil, French Guiana, Uruguay         (UTC -2:00) South Georgia/South Sandwich Islands         (UTC -1:00) Azores, Cape Verde Islands         (UTC) Greenwich Mean Time, Western European Time         (UTC +1:00) Central European Time, West Africa Time         (UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time         (UTC +3:00) Moscow Time, East Africa Time         (UTC +3:30) Iran Standard Time         (UTC +4:00) Azerbaijan Standard Time, Samara Time         (UTC +4:30) Afghanistan         (UTC +5:00) Pakistan Standard Time, Yekaterinburg Time         (UTC +5:30) Indian Standard Time, Sri Lanka Time         (UTC +5:45) Nepal Time         (UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time         (UTC +6:30) Cocos Islands, Myanmar         (UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam         (UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time         (UTC +8:45) Australian Central Western Standard Time         (UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time         (UTC +9:30) Australian Central Standard Time         (UTC +10:00) Australian Eastern Standard Time, Vladivostok Time         (UTC +10:30) Lord Howe Island         (UTC +11:00) Srednekolymsk Time, Solomon Islands, Vanuatu         (UTC +11:30) Norfolk Island         (UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time         (UTC +12:45) Chatham Islands Standard Time         (UTC +13:00) Phoenix Islands Time, Tonga         (UTC +14:00) Line Islands     

當(dāng)你的站點(diǎn)允許用戶選擇自己的本地時(shí)區(qū)時(shí),這個(gè)菜單會(huì)很有用。

第一個(gè)參數(shù)為菜單默認(rèn)選定的時(shí)區(qū),例如,要設(shè)置太平洋時(shí)間為默認(rèn)值,你可以這樣:

echo timezone_menu('UM8');

菜單中的值請(qǐng)參見下面的時(shí)區(qū)參考。

第二個(gè)參數(shù)用于為菜單設(shè)置一個(gè) CSS 類名。

第四個(gè)參數(shù)用于為生成的 select 標(biāo)簽設(shè)置一個(gè)或多個(gè)屬性。

注解

菜單中的文本可以在語言文件 language//date_lang.php 中找到。

時(shí)區(qū)參考

下表列出了每個(gè)時(shí)區(qū)和它所對(duì)應(yīng)的位置。

注意,為了表述清晰和格式工整,有些位置信息做了適當(dāng)?shù)膭h減。

時(shí)區(qū) 位置
UM12 (UTC - 12:00) 貝克島、豪蘭島
UM11 (UTC - 11:00) 薩摩亞時(shí)區(qū)、紐埃
UM10 (UTC - 10:00) 夏威夷-阿留申標(biāo)準(zhǔn)時(shí)間、庫(kù)克群島
UM95 (UTC - 09:30) 馬克薩斯群島
UM9 (UTC - 09:00) 阿拉斯加標(biāo)準(zhǔn)時(shí)間、甘比爾群島
UM8 (UTC - 08:00) 太平洋標(biāo)準(zhǔn)時(shí)間、克利珀頓島
UM7 (UTC - 07:00) 山區(qū)標(biāo)準(zhǔn)時(shí)間
UM6 (UTC - 06:00) 中部標(biāo)準(zhǔn)時(shí)間
UM5 (UTC - 05:00) 東部標(biāo)準(zhǔn)時(shí)間、西加勒比
UM45 (UTC - 04:30) 委內(nèi)瑞拉標(biāo)準(zhǔn)時(shí)間
UM4 (UTC - 04:00) 大西洋標(biāo)準(zhǔn)時(shí)間、東加勒比
UM35 (UTC - 03:30) 紐芬蘭標(biāo)準(zhǔn)時(shí)間
UM3 (UTC - 03:00) 阿根廷、巴西、法屬圭亞那、烏拉圭
UM2 (UTC - 02:00) 南喬治亞島、南桑威奇群島
UM1 (UTC -1:00) 亞速爾群島、佛得角群島
UTC (UTC) 格林尼治標(biāo)準(zhǔn)時(shí)間、西歐時(shí)間
UP1 (UTC +1:00) 中歐時(shí)間、西非時(shí)間
UP2 (UTC +2:00) 中非時(shí)間、東歐時(shí)間
UP3 (UTC +3:00) 莫斯科時(shí)間、東非時(shí)間
UP35 (UTC +3:30) 伊朗標(biāo)準(zhǔn)時(shí)間
UP4 (UTC +4:00) 阿塞拜疆標(biāo)準(zhǔn)時(shí)間、薩馬拉時(shí)間
UP45 (UTC +4:30) 阿富汗
UP5 (UTC +5:00) 巴基斯坦標(biāo)準(zhǔn)時(shí)間、葉卡捷琳堡時(shí)間
UP55 (UTC +5:30) 印度標(biāo)準(zhǔn)時(shí)間、斯里蘭卡時(shí)間
UP575 (UTC +5:45) 尼泊爾時(shí)間
UP6 (UTC +6:00) 孟加拉國(guó)標(biāo)準(zhǔn)時(shí)間、不丹時(shí)間、鄂木斯克時(shí)間
UP65 (UTC +6:30) 可可島、緬甸
UP7 (UTC +7:00) 克拉斯諾亞爾斯克時(shí)間、柬埔寨、老撾、泰國(guó)、越南
UP8 (UTC +8:00) 澳大利亞西部標(biāo)準(zhǔn)時(shí)間、北京時(shí)間
UP875 (UTC +8:45) 澳大利亞中西部標(biāo)準(zhǔn)時(shí)間
UP9 (UTC +9:00) 日本標(biāo)準(zhǔn)時(shí)間、韓國(guó)標(biāo)準(zhǔn)時(shí)間、雅庫(kù)茨克
UP95 (UTC +9:30) 澳大利亞中部標(biāo)準(zhǔn)時(shí)間
UP10 (UTC +10:00) 澳大利亞東部標(biāo)準(zhǔn)時(shí)間、海參崴時(shí)間
UP105 (UTC +10:30) 豪勛爵島
UP11 (UTC +11:00) 中科雷姆斯克時(shí)間、所羅門群島、瓦努阿圖
UP115 (UTC +11:30) 諾??藣u
UP12 (UTC +12:00) 斐濟(jì)、吉爾伯特群島、堪察加半島、新西蘭
UP1275 (UTC +12:45) 查塔姆群島標(biāo)準(zhǔn)時(shí)間
UP13 (UTC +13:00) 鳳凰島、湯加
UP14 (UTC +14:00) 萊恩群島
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)