从时间中删除 5 小时

发布于 2024-07-18 04:41:27 字数 71 浏览 6 评论 0原文

我正在使用 strtotime 从一些绳索 XML 创建时间戳,但时区不正确。

如何从时间中删除 5 小时?

I'm using strtotime to create a timestamp from some ropey XML, but the timezone is incorrect.

How can I remove 5 hours from the time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拥抱我好吗 2024-07-25 04:41:27

如果您知道时区,可以使用 date_default_timezone_set()

设置完毕后,您可以在 strtotime() 中执行此操作,如您所知。

strtotime("-5 hours", $time);

If you know the timezone, you can set it with date_default_timezone_set()

When that's set, you can just do this in strtotime() as you know.

strtotime("-5 hours", $time);
忘东忘西忘不掉你 2024-07-25 04:41:27

您可能想要类似的内容:

date('Y-m-d H:i:s', time() - 18000);

这将字符串格式化为日期和时间,以自纪元以​​来的秒数为单位的当前时间 - 18000 秒(五小时)。 您可以调整要减去的数字来调整要调整的小时数。 如果把18000写成(60*60*5)可能会更清楚。

对于顺序与美国不同的字符串,strtotime() 可能会产生意想不到的后果。 欧洲符号 (01/02/2009) 将被解读为 1 月 2 日,而本应是 2 月 1 日。 这是我在奥拉维尔的解决方案中看到的唯一问题,除了它是可靠的之外,但这个或那个都可以工作。

You probably want something like:

date('Y-m-d H:i:s', time() - 18000);

This formats a string as a date and time, for the current time in seconds since epoch - 18000 seconds (five hours). You can adjust the number you are subtracting to adjust how many hours you're adjusting by. It might be more clear if you write the 18000 as (60*60*5).

strtotime() can have unexpected consequences with strings where ordering is different than the US. European notation (01/02/2009) would be read as January 2nd where it is meant to be February 1st. This is the only issue I can see with olafur's solution, other than that it is solid, but either this one or that one will work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文