在php中是否有一种引用透明的方式来处理时间
无论代码何时何地运行,我都尝试在以下时区之间转换时间:在php中是否有一种引用透明的方式来处理时间,php,time,timestamp-with-timezone,Php,Time,Timestamp With Timezone,无论代码何时何地运行,我都尝试在以下时区之间转换时间: 运行代码的时区 AEST(澳大利亚东部标准时间) 美国东部夏令时(纽约东部夏时制) 例如,给定一个unix时间戳,如何使用EDT时区查找新的unix时间戳“同一周的星期一”?如何做到这一点,使其始终给出相同的结果?首先,您必须了解Unix时间戳与时区无关,它始终与UTC/GMT相关。请引用手册中的内容 返回自Unix纪元(1970年1月1日00:00:00 GMT)以来以秒为单位测量的当前时间 既然您知道一个时间戳代表一个相对于GMT/
- 运行代码的时区
- AEST(澳大利亚东部标准时间)
- 美国东部夏令时(纽约东部夏时制)
例如,给定一个unix时间戳,如何使用EDT时区查找新的unix时间戳“同一周的星期一”?如何做到这一点,使其始终给出相同的结果?首先,您必须了解Unix时间戳与时区无关,它始终与UTC/GMT相关。请引用手册中的内容 返回自Unix纪元(1970年1月1日00:00:00 GMT)以来以秒为单位测量的当前时间 既然您知道一个时间戳代表一个相对于GMT/UTC的固定时间,那么您可以继续并更改代码中的时区,以计算它们形成相同时间戳的时间 假设您有一个unix时间戳
$ts = 1171502725;
如果您根据它创建一个日期,您将执行以下操作
$date = new DateTime("@$ts");
echo $date->format('U = Y-m-d H:i:s T') . "\n";
现在你想看看它在EST中对应什么,你可以这样做
$date->setTimezone(new DateTimeZone('America/New_York'));
echo $date->format('U = Y-m-d H:i:s T') . "\n";
CST也是如此
$date->setTimezone(new DateTimeZone('America/Chicago'));
echo $date->format('U = Y-m-d H:i:s T') . "\n";
等等:)
输出
1171502725 = 2007-02-15 01:25:25 GMT+0000
1171502725 = 2007-02-14 20:25:25 EST
1171502725 = 2007-02-14 19:25:25 CST
您可以从获取受支持时区及其标识符的列表。是否还涉及数据库?或者只是PHP?微挑剔的可能重复:(1)一般来说,“Unix时间戳”只计算非闰SI秒,例如,在
2015-06-30 18:59:59 CST
和2015-06-30 19:00:00 CST
之间经过2秒(其间有闰秒),但POSIX时间仅计算1秒。(2) 在非POSIX情况下,Unix时间戳可能不同,例如,如果使用了“right/UTC”
时区,则时间戳表示实际经过的SI秒(TAI时间刻度,历元:1970年1月1日00:00:10 TAI)。否。首先你必须明白我想要EDT时区,一年四季。