PHP - Unix 时间戳与现在的比较

发布于 2024-11-08 18:16:43 字数 218 浏览 4 评论 0原文

我正在从数据库检索 unix 时间戳,我想检查该日期时间是否已经过去。

我尝试使用 if 语句与 time() 进行比较,但它总是说时间已经过去了。

我做错了什么?

编辑:只是更多信息..为了确定上午/下午,我在通过 mktime() 运行之前将 12 添加到小时(如果是 PM)。 (这是正确的吗?)

它作为 int 而不是任何日期时间类型存储在数据库中。

I'm retrieving a unix timestamp from a DB and I want to check if this datetime has passed already.

I tried using an if statement to compare to time() but it always says the time has passed already.

What am I doing wrong?

EDIT: Just some more info..to determine am/pm I'm adding 12 to the hour if its PM before running it through mktime(). (Is this right?)

It's stored in the DB as int not as any datetime types.

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

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

发布评论

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

评论(3

伤痕我心 2024-11-15 18:16:43

您的 PHP 时间可能会受到 PHP 时区的影响。使用 date_default_timezone_get() 找出您所在的时区。

Your PHP time could be affected by PHP's timezone. Use date_default_timezone_get() to find out what time zone you're in.

虚拟世界 2024-11-15 18:16:43

确保数据库和 PHP 中的时区相同,使用 NOW() 函数用当前时间戳填充数据库列(该列应为 datetime 类型),然后你可以使用 UNIX_TIMESTAMP() MySQL 函数获取时间戳,该函数与 PHP 的 time() 相比效果很好。

或者,您可以使用类似的内容填充数据库列,

mysql_query("INSERT INTO your_table (your_date) VALUES (FROM_UNIXTIME(" . time() . "))")

即使存在时区差异,它也应该可以工作。

Make sure the timezones in the DB and PHP are the same, use NOW() function to fill the DB column with current timestamp (the column should be of datetime type), then you can get the timestamp using UNIX_TIMESTAMP() MySQL function which compares against PHP's time() just nice.

Alternatively, you can fill the DB column with something like

mysql_query("INSERT INTO your_table (your_date) VALUES (FROM_UNIXTIME(" . time() . "))")

That should work even with timezone discrepancies.

月隐月明月朦胧 2024-11-15 18:16:43

如果您使用 mktime 创建 UNIX 时间戳,PHP 将使用时区设置来解释给定参数的含义。您可能应该使用gmmktime。这取决于数据库中的时间戳是如何创建的;如果没有看到更多代码和更详细的解释,我不能肯定地说。

我通常更喜欢将所有日期简单地存储为 UTC (GMT) 时区中的 DATETIME 类型。它往往不会那么混乱。

只是一些更多信息..为了确定上午/下午,我在通过 mktime() 运行之前将 12 添加到小时(如果是下午)。 (这样对吗?)

  • 中午 12 点是 12 点。
  • 下午 1 点是 13 点。

所以您不必总是添加 12。(即,中午 12 点是例外)。

If you are using mktime to create a UNIX timestamp, PHP is using the timezone settings to interpret what you mean by the given parameters. It's possible that you should be using gmmktime. It depends on how the timestamps in the database are being created; I cannot say for sure without seeing more code and having a more detailed explanation.

I generally prefer to simply store all dates as DATETIME types in the UTC (GMT) timezone. It tends to be less confusing.

Just some more info..to determine am/pm I'm adding 12 to the hour if its PM before running it through mktime(). (Is this right?)

  • 12 PM is hour 12.
  • 1 PM is hour 13.

So you don't always add 12. (i.e., 12 Noon is the exception).

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