标题:PHP学习笔记之 日期、时间函数 出处:Felix021 时间:Tue, 29 Jul 2008 11:15:20 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?1054 内容: 参考了杜江的《PHP5与MySQL5 Web开发技术详解》p106到p112之间的内容以及php_manual 1. 设置时区为中国的时区 date_default_timezone_set("PRC"); 可以修改php.ini中的date.timezone参数来达到同样的效果 2. 取得时间戳 int time() 函数返回一个31bit的整数,表示1970年1月1日到现在经过的秒数. 函数的返回值是与时区无关的,应该是以UTC时间为标准 3. 检查输入的日期是否合法 bool checkdate(int month, int day, int year); 比如checkdate(4, 31, 2008)返回false,因为4月没有31日 4. 将时间戳转化为字符串返回 string date(string format [, int timestamp]); 该函数返回format指定的时间或时间格式字符串,如果使用了timestamp参数,就转换该timestamp,否则使用当前的时间戳。 该函数的输出和当前设置的时区有关系,参见第一条 format包含有很多格式,可以自定义组合,详细列表参见php_manual。 示例: echo date("Y-m-d G:i:s"); //输出2008-07-29 10:46:31 echo date("y-n-j"); //输出短格式 07-6-16 echo date("Y年m月d日"); //输出2008年07月29日 5. 以数组形式取出时间日期信息 array getdate([int timestamp]) 如果指定timestamp,就将timestamp转换为数组,否则就使用当前的timestamp 输出与当前时区有关。 转换后的信息存储在一个数组中,示例如下: print_r(getdate()); 输出如下: Array ( [seconds] => 34 //秒 [minutes] => 50 //分 [hours] => 10 //时 [mday] => 29 //每月第几天 [wday] => 2 //每周第几天 [mon] => 7 //月 [year] => 2008 //年 [yday] => 210 //每年第几天 [weekday] => Tuesday //星期的英文表示 [month] => July //月份的英文表示 [0] => 1217299834 //时间戳 ) 6. 把年月日时分秒转化为时间戳 int mktime(int hour, int minute, int second, int month, int day, int year) 输出和当前时区有关。 例: echo mktime(10, 54, 0, 7, 29, 2008) . "\n"; date_default_timezone_set("PRC"); echo mktime(10, 54, 0, 7, 29, 2008) . "\n"; 输出为 1217328840 1217300040 7. 给出更精确的时间 mixed microtime() 该函数返回当前 Unix 时间戳和微秒数 具体格式是一个用空格分隔的字符串,前一半是用小数表示的秒数,后一半是Unix时间戳。 示例: 以下函数返回一个表示当前时间的浮点数(小数部分表示了微秒) function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } 8. 其他日期和时间函数 date_default_timezone_get() 取得默认的时区 strtotime() 将任何英文文本的日期时间描述解析为 Unix 时间戳 strftime() 根据区域设置格式化本地时间/日期 gmmmktime() 取得 GMT 日期的 UNIX 时间戳 gmdate() 格式化一个 GMT/UTC 日期/时间 *另:php和mysql的timestamp php中的timestamp是从UTC标准时间1970.1.1开始的秒数 而mysql中的timestamp类型是一个时间日期字符串 建议在mysql中用一个整数保存时间,php读取出该数后用date()函数转换输出 ==============华丽的分割线 added on 2009-1-25================== 补充两个好玩的简单的函数哦:把时间转化为易读的字符串,再转化回去 date_default_timezone_set("PRC"); //先设置时区哈 function time2str($timestamp = -1){ if($timestamp == -1) $timestamp = time(); return date("Y-m-d H:i:s", $timestamp); } function str2time($str){ list($Y, $m, $d, $H, $i, $s) = split(" |-|:", $str); return mktime($H, $i, $s, $m, $d, $Y); } Generated by Bo-blog 2.1.0