PHP语言中的时区设置有两种方法和通过函数设置
2021-08-10
一年12个月,一个月31天(或30天,二月28天,闰年29天),一周7天……这些都是基本常识。但是计算机本身并不能分辨数据的对与错,它只能依靠开发者提供的功能来执行或检查。通过PHP中的()函数检查日期和时间的有效性。语法如下: bool (int, int day, int year) 参数的有效值为1到12; day参数的有效值为当月最大天数,例如:一月为31天,二月为29天(闰年);参数 Year 的有效值为 1 到。如果验证日期有效,则返回 TRUE,否则返回。 【例12-7】验证2010年2月是28天还是29天,具体代码如下。运行结果是:2010年2月是28天12.3.3 检查日期时间倒计时的有效性是大家生活中经常用到的功能,比如:高考倒计时,春节倒计时,等等。 。下面使用PHP的日期时间函数设计2013年元旦倒计时程序。运行效果如图12-6所示。图12-6 倒计时的原理很简单,就是用固定时间减去当前时间,结果就是剩余时间。完成时间的加减,类似于比较大小,必须将时间转换为时间戳,然后才能计算,最后将时间戳转换为日期输出。
代码如下: 12.4 综合例子-倒计时(1)PHP默认使用标准格林威治标准时间(即使用零时区)。(2)更改PHP语言设置时区有两种方式:在PHP.INI文件中设置和通过函数设置。(3)对日期时间的处理可分为:格式化日期时间、获取日期时间信息、获取本地化date 和 Time 并检查日期和时间的有效性(4)PHP 中,通过 date() 函数格式化本地日期和时间。(5)PHP 中,() 函数用于获取相关性日期和时间的指定部分)信息。(6)在PHP中,通过()函数检查日期和时间的有效性。知识点提炼12-1打印出前一天的时间格式用PHP is 2006-5-10 22:21:21. 12-2 为什么date函数格式化的时间与实际时间相差8小时? 12-3 PHP使用da te() 函数将时间输入到数据库中。 12-4 php中如何查看时间函数? 12-5 php中如何更改时间 正常时间(2012-05-16)这种格式的格式化练习* * Logo Logo Logo Logo Logo Logo Logo Logo Logo 本章要求:第12章日期和时间时间PHP的概念在PHP配置文件 PHP.INI 设置服务器时区 通过()函数设置网站当前时区 获取任意日期时间的UNIX时间戳 获取当前时间戳 转换将日期和时间转换为时间戳 日期和时间格式化输出 获取当前日期和时间 验证日期和时间 有效性 主要内容 1. PHP 的时间概念 2. UNIX 时间戳 3. 日期和时间处理 4.综合例子-倒计时第12章日期和时间12.1 PHP的时间概念12.1.1 在PHP.INI文件中设置时区12.1.2 通过函数在php.ini文件中设置时区,需要定位到[date]下的“;date.=”选项,去掉前面的分号和将其值设置为本地时区使用的时间。
例如本地时区为东巴区,则可以将“date.=”的值设置为:PRC(中华人民共和国)、Asia/(香港)、Asia/(上海)或Asia /(乌鲁木齐)等等,这是东八区的时代。如图12-1所示。图12-1 设置PHP的时区设置完成后,保存文件并重启服务器。 12.1.1 在PHP.INI文件中设置时区 在应用中,在日期时间函数前使用()函数也可以完成时区设置。 () 函数的语法如下: ();参数是PHP可以识别的时区名称。如果 PHP 无法识别时区名称,则系统使用 UTC 时区。例如:可以用来设置北京时间的时区包括:PRC、Asia/(重庆)、Asia/(上海)或Asia/(乌鲁木齐),这些时区名称是等价的。注意:如果服务器使用零时区,则不能直接修改php.ini文件,只能通过()函数设置时区。
12.1.2 通过函数设置时区 12.2 UNIX 时间戳 12.2.1 获取任意日期和时间的时间戳 12.2.2 获取 time 12.2.3 日期和时间转换为UNIX时间戳()函数将时间转换为Unix时间戳。语法如下: int (int hour, int, int, int, int day, int year, int [] )() 函数根据给定的参数返回Unix时间戳。参数可以从右到左省略,任何省略的参数都会被设置为本地日期和时间的当前值(即不设置参数,()函数获取本地当前日期和时间)。 () 函数参数说明如表12-2所示。表12-2 () 函数参数说明: 有效时间戳范围为格林威治标准时间1901年12月13日20:45:54至2038年1月19日03:14:07。(该范围对应最小值和最大值32 位有符号整数)。在系统中,该范围限定为1970年1月1日至2038年1月19日。
12.2.1 获取任意日期和时间的时间戳。参数说明小时 (一分钟内) Day Days Year ,可以是两位或四位数字,0-69对应2000-2069,70-100对应1970-2000。该参数在夏令时可以设置为1,否则设置为0;如果不确定是否为夏令时,则设置为-1(默认值) [例12-1] 应用()函数获取当前时间的时间戳,代码如下。运行结果是:上面解释的()函数可以在不设置任何参数的情况下获取当前时间戳,但是PHP还提供了一个特殊的函数来获取当前时间戳php高考倒计时代码,即time()函数。 time() 函数获取当前 UNIX 时间戳,返回值是从 UNIX 纪元(1970 年 1 月 1 日,格林威治标准时间 00:00:00) 到当前时间的秒数。语法为如下: int time (void ) time() 函数没有参数,返回值为 UNIX 时间戳的整数值 [例 12-2] 使用 time() 函数获取当前时间的时间戳,代码如下,运行结果为: 12.2. 2 Get () 函数将任意英文文本的日期时间描述解析为UNIX时间戳。
语法如下: int (time [, int now] )() 函数接受一个包含英文日期格式的字符串,并尝试将其解析为 Unix 时间戳(自 1 1970 00:00:00 GMT 以来的秒数),它的值是相对于由 now 参数给出的时间。如果未提供此参数,则使用当前系统时间。如果参数 time 的格式是绝对时间,则 now 参数无效;如果参数time的格式是相对时间,那么对应的时间由参数now提供。如果解析成功,则返回时间戳,否则返回。在 PHP 5.1.0 之前,此函数在失败时返回 -1。 【例12-3】使用()函数将当前时间和指定日期转换为时间戳,代码如下。 ? 12.2.3 日期和时间转换为 UNIX 时间戳。运行结果如图 12-2 所示。图 12-2 将当前时间和指定日期转换为时间戳 注意:如果给定年份是两位数格式,则其值 0-69 表示 2000-2069,70-100 表示 1970-2000。有效时间戳通常是从 1901 年 12 月 13 日星期五 20:45:54 GMT 到 2038 年 1 月 19 日星期二 03:14:07 GMT(对应于 32 位有符号整数的最小值和最大值)。
并非所有平台都支持负时间戳,因此日志范围限制在不早于 Unix 纪元。这意味着 1970 年 1 月 1 日之前的日期将不会在某些版本和其他几个操作系统中使用。但是,PHP 5.1.0 和更新版本克服了这个限制。 12.3 日期和时间处理 12.3.1 格式化日期和时间 12.3.2 获取日期和时间信息 12.3.3 检查日期和时间的有效性date() 函数格式化本地日期和时间。语法如下: date( ,[int]) 参数指定日期和时间输出的格式。参数规范格式如表12-4所示。该参数是可选的。指定时间戳。如果未指定时间戳,则将使用本地时间戳 time()。表 12-4 date()函数中参数格式选项 12.3.1 格式日期时间参数说明 a 小写上午和下午值,返回值 am 或 pm A 大写上午和下午值,返回值 AM或 PM B 标准时间,返回值 000~999 d 星期几,前两位零,返回值 01~31 D 星期几,文本格式,3 个字母,返回值 Mon ~ Sun F 月,完整文本,返回值~h 小时,12 小时格式,无前导零,返回值 1~12 H 小时,24 小时格式,无前导零,返回值 0~23 i 带前导零的分钟数,返回值为 00~59 I 判断是否为夏令时,若为夏令时返回值为 1,否则为 0 j 月份中不带前导零的日期,返回值为 1~31 l(L 的小写) ) 周数,完整的文本格式,返回值~ L 判断是否为闰年,如果是闰年则返回值为1,否则为0 m 数字表示的月份,有前导零,返回值为 01~12 M 3 个字母缩写 返回值表示的月份 Jan~Dec n 无前导零的数字表示的月份,返回值1~12 O 与格林威治标准时间不同的小时数,如 +0200 r RFC 822 格式日期,如 Thu, 21 Dec 2000 16:01:07 +0200 s 秒数,前导零,返回值为 00~59 S 月份天数后的英文后缀,两个字符,如 st、nd、rd 或 th。
可以与j一起使用。 t 指定月份中的天数,28~31 T 机器所在的时区 U 自 UNIX 纪元(1 1970 00:00:00 GMT)以来的秒数 w 一周的第一天,表示以数字表示,返回值为 0~6 W ISO-8601 格式的星期几,从每周一开始 y 两位数年份,返回值如 88 或 08 Y 4 位完整表示 返回值为 1998、2008 z,一年中的天数,返回值是0到366Z偏移的秒数。UTC以西时区的偏移总是负的,时间的偏移UTC 以东的区域始终为正。返回值为-~【例12-4】使用date()函数设置不同的值,输出不同格式的时间和代码如下。运行结果如图12-3所示。图 12-3 日期函数以不同格式输出当前时间。注意:在运行本章示例时,部分读者可能得到的时间与系统时间不同。这不是程序的问题。因为 PHP 语言中的默认设置是标准格林威治标准时间,而不是北京时间。如果时间不匹配,请参考本章12.1部分。 【例12-5】使用date()和time()函数获取系统当前时间和时间戳。具体代码如下。
其运行效果如图12-4所示。图12-4 获取当前时间的时间戳()函数获取日期时间指定部分的相关信息。语法如下: (int) 函数以数组的形式返回日期和时间信息。如果没有时间戳,则以当前时间为准。函数返回的关联数组元素说明如表12-5所示。表12-5()函数返回的关联数组元素说明()函数更适合获取当前日期是年、月还是星期几。虽然也可以获取当前日期,但由于获取的是返回值数组,所以更适合获取时间中的特定值。 12.3.2 获取日期和时间信息。键名解释了返回值。返回值为秒。 0 到 59 分钟,返回值是 0 到 59 小时,返回值是 0 到 23 mday,月份中的天,返回值是 1 到 31 wday 星期几,返回值是 0(代表) to 6 (代表星期六)mon 月份数字的返回值为1到12年。返回值为4位数字表示的完整年份,如2010或2011。完整文本表示返回值是Unix纪元开始后的0秒,与time()的返回值和date()使用的值类似,系统类似,典型值是from-to [例12-6] pass ()函数获取当前日期php高考倒计时代码,当前日期为年中的日期和月份中的日期,具体代码如下,运行结果如图12-5所示。 图12-5 函数获取当前时间信息 Logo Logo Logo Logo Logo Logo Logo Logo Logo Logo * *