我正在实现一个注册设施,该设施在其中发送带有令牌的链接 - 令牌有效1小时。因此,在电子邮件中(假设现在是14:20(我想说:
您必须单击此链接15:30
该网站的受众将在爱尔兰/英国,美国/加拿大,也许在欧洲 - 因此,我想在几个时区列出这些(非技术(人会理解的时区的到期时间。
所以这就是我想出的
Click by:
Ireland/UK > 25 Apr 2018 13:59
CET (Berlin) > 25 Apr 2018 14:59
Pacific (Los Angeles) > 25 Apr 2018 05:59
Mountain (Denver) > 25 Apr 2018 06:59
Central (Chicago) > 25 Apr 2018 07:59
Eastern (New York) > 25 Apr 2018 08:59
现在,我知道丹佛目前是MDT(冬季的MST(,但是在爱尔兰,我们现在在IST(UTC 1(或冬季GMT,但是如果您问一个随机的人我们在哪个时区,充其量是全年都会得到GMT作为回应。因此,我将时间列为一般的"山",并给一个样本城市。
美国/加拿大人的这种方法如何?
我的代码在下面,这是一个实时链接
<?php
$exipry = 60*60 + time();
$now_obj = new DateTime(date("Y-m-d H:i:s", $exipry));
$now_obj->setTimezone(new DateTimeZone('Europe/Dublin'));
$now_hour_from_IRELAND_datetime = $now_obj->format('d M Y H:i');
$now_obj->setTimezone(new DateTimeZone('Europe/Berlin'));
$now_hour_from_CET_datetime = $now_obj->format('d M Y H:i');
$now_obj->setTimezone(new DateTimeZone('America/Los_Angeles'));
$now_hour_from_pacific_datetime = $now_obj->format('d M Y H:i');
$now_obj->setTimezone(new DateTimeZone('America/Denver'));
$now_hour_from_mountain_datetime = $now_obj->format('d M Y H:i');
$now_obj->setTimezone(new DateTimeZone('America/Chicago'));
$now_hour_from_central_datetime = $now_obj->format('d M Y H:i');
$now_obj->setTimezone(new DateTimeZone('America/New_York'));
$now_hour_from_eastern_datetime = $now_obj->format('d M Y H:i');
print("<h1>1 hour from now is:</h1>");
print("Ireland/UK > $now_hour_from_IRELAND_datetime<p>");
print("CET (Berlin) > $now_hour_from_CET_datetime<p>");
print("Pacific (Los Angeles) > $now_hour_from_pacific_datetime<p>");
print("Mountain (Denver) > $now_hour_from_mountain_datetime<p>");
print("Central (Chicago) > $now_hour_from_central_datetime<p>");
print("Eastern (New York) > $now_hour_from_eastern_datetime<p>");
?>
对我来说看起来很正确。
也确保对"亚洲/加尔各答"也进行测试。这是一个很好的测试,因为其时区偏移量为半小时。
同上"美国/凤凰城",因为它们一年四季都保持在标准时间。
通常像这样的应用程序要求每个用户在入职期间提供一个时区名称。(但是许多用户不打扰(
在美国,当我们想以不必在夏季和冬季之间改变的方式指定一个时区时,我们说"东时","中央时间","山时间","太平洋时间","还有夏威夷和阿拉斯加时间。加拿大人也有"大西洋时间"("美国/哈利法克斯"(。在亚利桑那州("美国/凤凰"(中,他们说"亚利桑那时间"。