Jul 29

PHP学习笔记之 日期、时间函数 不指定

felix021 @ 2008-7-29 11:15 [IT » 网络] 评论(1) , 引用(0) , 阅读(6482) | Via 本站原创 | |
参考了杜江的《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);
}




欢迎扫码关注:




转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php
123
2010-4-23 20:00
fghfdh
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]