UTC GMT 时区 时间戳

time();
是获得当前时间,但获得的是一整型

可以对此进行格式化
date("Y-m-d H:i:s", time()) ;
这样连时,分秒一起显示
date("Y-m-d ", time()); 只年示年月日

UTC: Universal Time Coordinated 协调世界时,又称世界标准时间
GMT: Greenwich Mean Time 格林尼治平均时
UTC和GMT都与英国伦敦的本地时相同,所以程序中UTC与GMT没什么不同。


时区:全球24个时区,把以伦敦为中心的世界地图展开,UTC和GMT的伦敦是0区,伦敦的右边直到新西兰的东部不远的斐济为东区,而左边到太平洋中间为西区。一般用5位时区差来表示与UTC相差的小时数,东区为正,西区为负。如北京时区是东八区,领先UTC八个小时,记为 +0800;纽约的时区是西五区,比UTC落后五个小时,记为 -0500。
UTC + 时区差 = 本地时间


时间戳:
PHP记为自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。PHP用time()函数来获得当前时间戳,用mktime来生成一个时间戳。
Javascript则精确到毫秒数。用dateObject.getTime()来获得当前时间戳,用Date.parse(datestring)来生成一个时间戳。


**纽约时间(-0500)和北京时间换算:
UTC + (-0500) = 纽约时间 (3)
UTC = 纽约时间 + 0500 (4)
把(2)式 - (4)式相比较,
UTC = 北京时间 - 0800 = 纽约时间 + 0500 (5)
即 北京时间 = 纽约时间 + 1300 (6)
即北京时间领先纽约时间十三个小时,由(6)式,
纽约时间 = 北京时间 - 1300 (7)

在四月下旬,纽约又换用夏令时,又称为日光节约时,比标准纽约时间提前一个小时,实际成为西四区的标准时间,成为 -0400。
UTC + (-0400) = 纽约夏令时,套用以上公式,
北京时间 = 纽约夏令时 + 1200
纽约夏令时 = 北京时间 - 1200


**电子邮件中的时间:
Email程序记录的是发信服务器本地RFC 822格式的时间,在电子邮件信头的Date域记为+0800:
Date: Fri, 08 Nov 2002 09:42:22 +0800

Date信头是可以修改的,所以平时可以看到垃圾邮件的时间是几十年前或后。

而像Outlook和Thunderbird会自动把UTC转换为本地时间,想要看真实时间的话要查看完整邮件头。


**把服务器上记录的时间转换为客户端本地时间
<?
/**
 * 把如 2009-02-12 15:48:45 +0800 格式的时间转换为浏览者的本地时间
 * 调用方法:
 * <script language="JavaScript">calcLocaltime(<? echo themktime($tmptime); ?>, <? echo thezone($tmptime); ?>)</script>
 */
function themktime($datetime) { //把时间 2009-02-12 15:48:45 转换为时间戳
    $hour = substr($datetime, 11, 2);
    $min = substr($datetime, 14, 2);
    $sec = substr($datetime, 17, 2);
    $mon = substr($datetime, 5, 2);
    $day = substr($datetime, 8, 2);
    $year = substr($datetime, 0, 4);

    $unixtime = mktime($hour, $min, $sec, $mon, $day, $year);
    return $unixtime;
}

function thezone($datetime) { //提取时区小时差
    $zone = substr($datetime, 20, 3);
    return $zone;
}
?>


<script language="JavaScript">
function calcLocaltime(remotetime, offset) { //remotetime为服务器时间戳,offset为时区小时差
    utc = remotetime * 1000 - offset * 3600 * 1000; //JS时间戳为毫秒,而PHP为秒,要作换算(*1000)
    d = new Date();
    nd = new Date(utc - ( 60000 * d.getTimezoneOffset() ) ); //注意: getTimezoneOffset = UTC - 本地时间,结果以分为单位;而一般时区差 = 本地时间 - UTC,以小时为单位
    document.write(nd.toLocaleString());
}
</script>

一,PHP时间戳函数获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下:

echo strtotime(”2009-1-22″) 结果:1232553600

说明:返回2009年1月22日0点0分0秒时间戳

二,PHP时间戳函数获取英文文本日期时间 示例如下:

便于比较,使用date将当时间戳与指定时间戳转换成系统时间

(1)打印明天此时的时间戳strtotime(”+1 day”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-23 09:40:25

(2)打印昨天此时的时间戳strtotime(”-1 day”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-21 09:40:25

(3)打印下个星期此时的时间戳strtotime(”+1 week”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-29 09:40:25

(4)打印上个星期此时的时间戳strtotime(”-1 week”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-15 09:40:25

(5)打印指定下星期几的时间戳strtotime(”next Thursday”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果:2009-01-29 00:00:00

(6)打印指定上星期几的时间戳strtotime(”last Thursday”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果:2009-01-15 00:00:00

以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值