日期辅助函数

日期辅助函数的文件涵盖了一些用于辅助日期数组操作的函数。

装载本辅助函数

本辅助函数的装载通过如下代码完成:

  1. $this->load->helper('date');
可用的函数如下: ## now() 返回当前的 Unix 时间戳,根据你的config文件中"time reference"设定返回服务器当前时间或者GMT时间。如果你没有计划使用GMT时间(通常是你准备在站点中允许用户选择时区设置),则此函数跟PHP中time()函数等同。 ## mdate() 这个函数跟PHP的内部函数[date()](http://www.php.net/date)几乎是一样的,区别在于,这个函数允许你使用在每个代码字母前带有百分号“%”的MySQL时间表达形式: %Y %m %d 等。 采用这种方式处理时间数据的优点在于,避免了你在使用date()函数时经常担心漏掉那些非时间的字符的问题。例如:
  1. $datestring = "Year: %Y Month: %m Day: %d - %h:%i %a";
  2. $time = time();
  3. echo mdate($datestring, $time);
如果第二参数中不包含时间戳则使用当前时间。 ## standard_date() 允许你从一些标准格式生成日期字符串。例子:
  1. $format = 'DATE_RFC822';
  2. $time = time();
  3. echo standard_date($format, $time);
第一个参数必须包含格式,第二个参数必须使用unix时间戳。 支持格式:
常量描述例子
DATE_ATOMAtom2005-08-15T16:13:03+0000
DATE_COOKIEHTTP CookiesSun, 14 Aug 2005 16:13:03 UTC
DATE_ISO8601ISO-86012005-08-14T16:13:03+00:00
DATE_RFC822RFC 822Sun, 14 Aug 05 16:13:03 UTC
DATE_RFC850RFC 850Sunday, 14-Aug-05 16:13:03 UTC
DATE_RFC1036RFC 1036Sunday, 14-Aug-05 16:13:03 UTC
DATE_RFC1123RFC 1123Sun, 14 Aug 2005 16:13:03 UTC
DATE_RFC2822RFC 2822Sun, 14 Aug 2005 16:13:03 +0000
DATE_RSSRSSSun, 14 Aug 2005 16:13:03 UTC
DATE_W3CWorld Wide Web Consortium2005-08-14T16:13:03+0000
## local_to_gmt() 将unix时间戳转换为GMT。例子:
  1. $now = time();
  2. $gmt = local_to_gmt($now);

gmt_to_local()

输入一个GMT的unix时间戳,根据时区、夏时制转换为本地时间戳。例子:

  1. $timestamp = '1140153693';
  2. $timezone = 'UM8';
  3. $daylight_saving = TRUE;
  4. echo gmt_to_local($timestamp, $timezone, $daylight_saving);
**注意:**时区列表请参考本页末。 ## mysql_to_unix() 将MySQL时间戳转换为unix时间戳。例子:
  1. $mysql = '20061124092345';
  2. $unix = mysql_to_unix($mysql);

unix_to_human()

将unix时间戳转为如下人类可阅读格式:

  1. YYYY-MM-DD HH:MM:SS AM/PM
本函数可用于需要作为表单提交的地方。 时间可以设置为含或者不含秒数,而且可以设为欧洲或美国格式。如果只有时间戳,则格式化为不含秒数的美国格式。例子:
  1. $now = time();
  2. echo unix_to_human($now); // U.S. time, no seconds
  3. echo unix_to_human($now, TRUE, 'us'); // U.S. time with seconds
  4. echo unix_to_human($now, TRUE, 'eu'); // Euro time with seconds

human_to_unix()

跟上面函数相反,这个函数将“人类”的时间表示方式(如,2008-12-31 04:38 PM)转换成unix的时间表示方式(如:1230713116)。这个函数在你接收一个从表单提交而来的“人类”的时间格式时会很有用。如果传递给这个函数的参数不是如上所说的“人类”时间格式的字符串,那么它将返回FALSE (boolean)。例如:

  1. $now = time();
  2. $human = unix_to_human($now);
  3. $unix = human_to_unix($human);

timespan()

格式化unix时间戳使其看起来像这样:

  1. 1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes
第一参数必须是unix时间戳,第二个参数是一个大于第一参数的时间戳。如果第二参数空缺,则使用当前时间。这个函数的用途通常是计算过去某一个时间点到现在的时间之间的时间差。例如:
  1. $post_date = '1079621429';
  2. $now = time();
  3. echo timespan($post_date, $now);
**Note:**由本函数生成的文字可以在以下语言文件中找到: language/<your_lang>/date_lang.php ## days_in_month() 对给出的年月值返回天数。这个函数的实现已经考虑了存在闰年和平年的情况。例如:
  1. echo days_in_month(06, 2005);
如果省略第二参数则使用当前年。 ## timezones() 根据给定的时区参考(有效时区列表请参见下面的“时区参考”)返回跟UTC的相差值(小时)。
  1. echo timezones('UM5');

本函数最有用是在使用timezone_menu()函数时.

timezone_menu()

生成一个时区下拉选单,像这样:日期辅助函数 - 图1在你需要向你的网站会员提供他们所在时区的设置选项时这个选单会很有用的。

第一个参数让你设置选单的“已选”状态。例如,你想将美国西部标准时间设为默认时间,你可以这样做:

  1. echo timezone_menu('UM8');
要得到这个选单的各个具体值,请看下面的时区参考表。

第二个参数让你为选单设置CSS的类名。

注意:上面选单里的每个条目可以在这个文件语言文件里找到: language/<your_lang>/date_lang.php

时区参考

下面的表说明了各个时区值以及该值对应的地点

时区位置
UM12(UTC - 12:00) 埃尼威托克, 夸贾林环礁
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) 巴格达, 利雅得, 莫斯科, 内罗毕
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) 曼谷, 河内, 雅加达
UP8(UTC + 8:00) 北京, 香港, 佩斯, 新加坡, 台北
UP9(UTC + 9:00) 大阪, 札幌, 汉城, 东京, 雅库茨克
UP85(UTC + 9:30) 阿德莱德, 达尔文
UP10(UTC + 10:00) 墨尔本, 巴布亚新几内亚, 悉尼, 海参崴
UP11(UTC + 11:00) 中科雷姆斯克, 新喀里多尼亚, 所罗门群岛
UP12(UTC + 12:00) 奥克兰, 惠灵顿, 斐济, 马绍尔群岛

翻译贡献者:csfhc, Hex, Jacklee, mchong, pipi95, yinzhili