php time() 的问题

WBOY
发布: 2016-08-23 09:17:51
原创
1755 人浏览过

time()取得是服务器的时间,那么在中国,和美国取得时间是一样的吗?因为开发出了个问题,商品团购活动在中国已经结束,但是国外还能购买,所有时间用的都是时间戳,数据库的开始时间是一致的,难道是time()的问题?

回复内容:

time()取得是服务器的时间,那么在中国,和美国取得时间是一样的吗?因为开发出了个问题,商品团购活动在中国已经结束,但是国外还能购买,所有时间用的都是时间戳,数据库的开始时间是一致的,难道是time()的问题?

时间戳是 从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
所以,该值与时区无关,与时区有关的是时间,比如 1471827600是北京时间(2016-08-22T09:00,东8区),那么同样的时间戳在东七区的时间䪱炯2016-08-22T08:00。

上下楼答案都对, 时间戳与时区无关. 但是时间戳转化成日期时间格式时, 与时区有关. 之前答案错误... 为误导题主道歉.

<code class="php">$time = time();
date_default_timezone_set('America/Los_Angeles'); 
echo time() . PHP_EOL;
echo date('Y-m-d H:i:s', $time) . PHP_EOL;

date_default_timezone_set("UTC"); 
echo time() . PHP_EOL;
echo date('Y-m-d H:i:s', $time) . PHP_EOL;</code>
登录后复制

time()获得的是时间戳,而时间戳是无时区的,都是统一采用格林尼治时间。所以除非你两台服务器本身的服务器时间就不一致,不然获得的time()是一致的。

时区不一样啊

统一时区,为UTC,我也遇到过

函数time()获取的是时间戳,是没有时区概念的.
但是如果你用国内外2台服务器,设置同一个时间戳开始售卖,同一时间戳结束售卖,那么国内开始的时候,国外的网站是没有开始的,(推测的依据是题主说国内结束国外还没有结束,而售卖持续的时间一样)因为时间戳转换为时间就有了时区的概念,所以如果要同时售卖,同时结束,你需要将两地的时间换算成格林威治标准时间(时间戳的由来),然后得到不同的时间戳,加上你想要持续的售卖时间就可以了.

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!