gra*_*ski -4 php time timestamp-with-timezone
我试图将时间转换为以下时区,无论代码运行的时间和位置如何:
例如,给定一个unix时间戳,如何使用EDT时区找到新的unix时间戳"同一周的星期一"?我该怎么做,这样它总会得到相同的结果?
Han*_*nky 46
首先,您必须了解Unix时间戳与时区无关,它始终与UTC/GMT相关.引用手册
返回自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数测量的当前时间.
既然您知道一个时间戳表示参考GMT/UTC的固定时间,您可以继续更改代码中的时区,以便从相同的时间戳计算它们的时间.
我们假设你有一个unix时间戳
$ts = 1171502725;
Run Code Online (Sandbox Code Playgroud)
如果你从中创建一个日期,你会做类似的事情
$date = new DateTime("@$ts");
echo $date->format('U = Y-m-d H:i:s T') . "\n";
Run Code Online (Sandbox Code Playgroud)
现在你想看看在EST中对应的是什么,你可以做到
$date->setTimezone(new DateTimeZone('America/New_York'));
echo $date->format('U = Y-m-d H:i:s T') . "\n";
Run Code Online (Sandbox Code Playgroud)
同样适用于CST
$date->setTimezone(new DateTimeZone('America/Chicago'));
echo $date->format('U = Y-m-d H:i:s T') . "\n";
Run Code Online (Sandbox Code Playgroud)
等等 :)
产量
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
Run Code Online (Sandbox Code Playgroud)
您可以从PHP手册中获取支持的时区及其标识符列表
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |