为了确保我们在同一页面上,我只想重申,unix 时间戳只是自“Unix 纪元”(1970 年 1 月 1 日)以来的秒数。因此,简单的数学将适用于 unix 时间戳。
有两种方法可以解决这个问题;从您的帖子来看,您对要使用哪个感到困惑。
第一种方法是最简单(也是最合乎逻辑)的方法,即存储它们的偏移量(如果你已经有了它)并将其乘以 3600(以秒为单位的 1 小时),然后将该值添加到当前的 unix 时间戳以获取它们的最终运行时间。
另一种方法是使用DateTime
andDateTimeZone
类。如此处所示,这两个类是如何工作的,是您创建了两个DateTimeZone
对象,一个带有您的时区,一个带有他们的时区;创建两个DateTime
对象,第一个参数是"now"
,第二个是对上述DateTimeZone
对象的引用(分别);然后在您的时区对象上调用该getOffset
方法,将他们的时区对象作为第一个参数传递,最终以秒为单位获得偏移量,该偏移量可以添加到当前的 unix 时间戳以获得他们的作业需要运行的时间。
如果我自己这么说,对于如此简单的任务,第二种方法似乎要复杂得多,所以第一种解决方案可能更适合您的需求。但是,如果您希望有一个更完整的方法,那么使用DateTime
andDateTimeZone
肯定是可能的。
关于 strtotime 的快速说明: Strtotime 是 date() 命令的一个简单对立面,并且不会比实现您正在寻找的“工具”更有用。它本身不会为您转换或找到偏移量;它只是将格式化的日期和时间转换为 unix 时间戳。