为了确保我们处于同一页面,我只想重申一个unix时间戳仅仅是自“Unix Epoch”(1970年1月1日)以来的秒数。因此简单的数学运算将在unix时间戳上起作用。
有两种方法可以解决这个问题;从你的帖子来看,你对你想使用哪一个感到困惑。
第一种方式是最简单的(也是最合理的)方法,那就是存储它们的偏移量(如果你已经拥有它),然后乘以3600(1秒钟),然后添加表示值为当前unix时间戳以获得其最终运行时间。
另一种方法是使用DateTime
和DateTimeZone
类。 here如何显示这两个类的工作方式是创建两个DateTimeZone
对象,一个带有您的时区,另一个带有它们;创建两个DateTime
对象,其中第一个参数为"now"
,第二个参考分别为上面的对象DateTimeZone
;然后调用传递他们时区对象作为第一个参数您时区对象的getOffset
方法,最终让你在可以添加到当前Unix时间戳来获取时间他们作业需要秒偏移跑。
如果我自己这样说,第二种方式似乎要复杂得多,因此第一种解决方案可能更适合您的需求。但是,如果您希望采用更完整的方法,那么使用DateTime
和DateTimeZone
肯定是可能的。
关于strtotime的简要说明:strtotime与date()命令相反,并且不会比用“工具”来实现你要找的东西更有用。它本身不会为你转换或找到抵消;它只是将格式化的日期和时间转换为unix时间戳。
来源
2010-11-16 21:36:58
Qix
@Kyle Hudson - 将时间仅存储在执行服务器时区中,并列中列出您的客户端时区与执行服务器时区之间的区别,例如您的客户端时区比执行时间快3600秒服务器,所以存储-3600,并总结它 – ajreal 2010-11-16 17:18:34
为什么不能使用DateTime或Timestamp列?此外,请参阅这里[关于使用DateTime和DateTimezone的示例](http:// stackoverflow。COM /问题/ 2095020 /怎么办,你变化最时区功能于PHP换一个存在的时间戳/ 2095165#2095165)。 – Gordon 2010-11-16 17:21:00
@Gordon +1,@ajreal:不会是+3600吗? – 2010-11-16 17:27:58