如何查找国家/地区名称 - >我可以做的GMT日期/时间如下:
示例:
$datetime = new GMT_search('America'); //output: 2010-01-01 00:00:00
$datetime = new GMT_search('India'); //output: 2010-01-01 ??:??:??
$datetime = new GMT_search('China'); //output: 2010-01-01 ??:??:??
我尝试了gmdate()
,date_default_timezone_set('Asia/....');
和ini_set('date.timezone','China');
,但这并不能帮助我轻松找到GMT日期/时间的国家名称。
有谁可以请给我一个PHP示例,它真的有效吗?
谢谢
答案 0 :(得分:35)
您可以按国家/地区DateTimeZone::listIdentifiers
搜索时区。
示例,获取葡萄牙的时区:
print_r(DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, "PT"));
给出:
Array ( [0] => Atlantic/Azores [1] => Atlantic/Madeira [2] => Europe/Lisbon )
然后你可以这样做:
$d = new DateTime("now", new DateTimeZone("Atlantic/Azores"));
echo $d->format(DateTime::W3C); //2010-08-14T15:22:22+00:00
正如在这个帖子中一遍又一遍地重复一样,你不能为每个国家获得一个时区。国家/地区有几个时区,您会注意到即使this page也没有为美国等一些国家/地区任意选择一个。
答案 1 :(得分:3)
不确定这是否是您要查找的内容,但PEAR有一个“Date”可用包,其中有一个很好的示例,似乎可以满足您的要求。
http://pear.php.net/manual/en/package.datetime.date.examples.php(向下滚动到“转换时区”)
答案 2 :(得分:3)
Here您将找到PHP支持的完整时区列表,这些时区可用于例如: date_default_timezone_set()
。对具有多个时区的国家/地区的支持也很方便查找。拿example of the American region。
<?php
date_default_timezone_set('America/New_York');
echo date('D,F j, Y, h:i:s A');
?>
该列表是PHP支持的完整时区,用于例如date_default_timezone_set()。
答案 3 :(得分:2)
你不能这样做,因为很多国家都有多个时区。您可以使用城市名称存储时区,但我会使用一个整数,其时区偏移量以秒为单位。
您可以通过此功能获取洲/城市的时区列表: www.php.net/manual/en/function.timezone-identifiers-list.php
您可以从此功能获得相应的偏移量: www.php.net/manual/en/datetimezone.getoffset.php
如果您有一个有效的偏移量,您可以使用gmdate()而不是date()来获取格式的日期而不调整时区/ dst。只需传递时间()+您存储的调整: www.php.net/manual/en/function.gmdate.php
很抱歉没有张贴链接,但我没有足够的业力。