Heim  >  Artikel  >  Backend-Entwicklung  >  php time() 的问题

php time() 的问题

WBOY
WBOYOriginal
2016-08-23 09:17:511756Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn