【发布时间】:2016-05-01 11:23:43
【问题描述】:
对于一个简单的 PHP 图形脚本,我需要在本地时间天对齐时间值。当我做$timestamp % 86400 == 0 之类的事情时,我每天凌晨 2 点休息,因为我在这里是 UTC +2。此外,我所有的网格线都在凌晨 2 点、凌晨 5 点、早上 8 点等,而不是凌晨 0 点、凌晨 3 点、早上 6 点等。
我知道 UNIX 时间戳整数值 总是 在 UTC 中,并且有 date() 和 gmdate() 等,但我需要一个本地时间的整数来对其进行算术运算。我将如何在 PHP 中做到这一点? .NET中是否有ToLocalTime()和ToUniversalTime()之类的功能?
为了澄清这个问题,我与时间的可读格式无关。没有 YYYY-MM-DD HH:MM:SS 之类的,我只处理数字。输入是自 UTC 纪元以来的秒数,即 UNIX 时间戳。我需要的是相同类型的数字,但不是UTC,而是当地时间。所以我需要将 UNIX 时间戳整数转换为本地时间戳整数。希望这是可以理解的,并且任何人都可以想象这可以用于什么(在本地时间对齐时间轴图中的网格线)。
【问题讨论】:
-
不要使用时间戳进行此类计算。使用
DateTime类及其亲属。 -
为什么你认为时间戳是UTC而不是本地服务器时间?
-
@axiac 那么你建议如何找到一个与 3 小时对齐的开始时间?模很简单。 DateTime 类可以这样做吗?
-
@splash58 这是根据定义。做你自己的测试,你会发现时间戳是 UTC 纪元以来的秒数,而不是本地时间。
-
DateTime类可以做的不止这些。它还负责 DST、时区、日期格式、日期时间操作(日期间隔的加法、减法)。
标签: php