是否可以从时间戳和时区偏移量创建日期字符串?

时间:2011-02-21 09:32:26

标签: php date localization timezone

所有日期/时间扩展都基于时区字符串,例如“Europe / Amsterdam”。

我向用户显示的下拉列表每个时区偏移有一个选项,例如:“(UTC -3:00)阿根廷,巴西,法属圭亚那,乌拉圭”

我不认为向他展示世界上所有国家的名单是合适的,因为唯一重要的是时区偏移。

是否可以从'-2'(作为时区偏移量)创建本地化的日期对象或日期字符串?

回答:日期('Y-m-d h:i:s',$ unix_timestamp + $ offset * 60 * 60)

2 个答案:

答案 0 :(得分:1)

您可以使用mktime向日期函数提供第二个参数。 像这样的Smth:

var_dump($endDate = date('Y-m-d h:i:s', mktime(0-2, 0, 0, 2, 1, 2011)));

或者像这样使用datetime class

$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

date_default_timezone_set('Europe/Bucharest');
# equivalent of GMT since Europe/Bucharest is +2 , we feed -2 for the hour
var_dump($endDate = date('Y-m-d h:i:s', mktime(date('h')-2, date('i'), date('s'), date('d'), date('m'), date('Y'))));
# equivalent of GMT+1 since Europe/Bucharest is +2 we feed -1 for the hour
var_dump($endDate = date('Y-m-d h:i:s', mktime(date('h')-1, date('i'), date('s'), date('d'), date('m'), date('Y'))));

你可以为小时提供+3,以欧洲/布加勒斯特为默认时区+3将给GMT +5,你也可以设置默认时区欧洲/伦敦女巫相当于GMT0然后用户发送给你+2你将以+2为小时提供mktime女巫将给你相当于GMT + 2欧洲/布加勒斯特。

答案 1 :(得分:0)

日期('Y-m-d h:i:s',$ unix_timestamp + $ offset * 60 * 60)