zoukankan      html  css  js  c++  java
  • 有关mktime和gmmktime

    int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )

    根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。

    参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值


    int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )

    mktime() 完全一样,只除了返回值是格林威治标准时的时间戳。

    参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。

    mktime() 一样,参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

    PHP手册的介绍很模糊,下面来看两个例子:

    首先将php.ini中的date.timezone 设置为 date.timezone = PRC

    <?php
    $ltime = mktime();
    $gtime = gmmktime();
    echo "$ltime<br/>$gtime<br/>";
    ?>

    输出结果如下:

    1315311558
    1315311558

    两个函数的返回结果是一样的, 按我的理解一个返回本地时间的时间戳,一个返回GMT时间的时间戳,应该相差八小时才对。

    再看一个例子:

    <?php
    $ltime = mktime(0,0,0,1,1,1990);
    $gtime = gmmktime(0,0,0,1,1,1990);
    echo "$ltime<br/>$gtime<br/>";
    ?>
    输出结果如下:
    631123200
    631152000
    (631152000-631123200)/3600=8,刚好相差8个小时,这就对了。

    对以上两个例子的分析:

    (1)在第一个例子中尽管gmmktime返回的是当前GMT时间的时间戳,但是默认参数传进去也是当前GMT时间的时、分、秒 、月、日、年,而mktime默认参数穿进去的是当前本地时间的

    时、分、秒 、月、日、年,这样的话在mktime中将时间转换为GMT时间后会与gmmktime的参数值一样,所以他们的返回值一样

    (2)在第二个例子中,mktime和gmmktime两个传进去的参数值都是固定死的1990-01-01 00:00:00,所以在mktime中会将1990-01-01 00:00:00转换为GMT时间再计算时间戳,而北京时间比GMT时间大8个时区,所以mktime的计算方法是将1990-01-01 00:00:00减去8个小时,这就是为什么gmmktime的返回值比mktime的返回值大8个小时的原因了。


  • 相关阅读:
    firefox ajax async 弹出窗口提示阻止
    Spring加载resource时classpath*:与classpath:的区别(转)
    超链接的href属性 js调用
    jquery easyui tabs layout 记录
    PostgreSQL 中的递归查询 与oracle 的比较
    将字符串中的中文(英文)字符串转化为阿拉伯数字
    用CSS控制文字的宽度,超过省略号代替(转)
    制作gridview 固定列的2种简单解决方案
    自制树型控件(DataGrid) 支持多种响应
    备忘: select 对象的操作js(转)
  • 原文地址:https://www.cnblogs.com/mxw09/p/2169148.html
Copyright © 2011-2022 走看看