【发布时间】:2011-02-20 11:49:50
【问题描述】:
目前我将时间存储在我的数据库中,如下所示:2010-05-17 19:13:37
但是,我需要比较两次,我觉得如果是像1274119041这样的unix时间戳会更容易做到。 (这两次是不同的)
那么如何将时间戳转换为 unix 时间戳?有没有简单的php函数呢?
【问题讨论】:
标签: php timestamp unix-timestamp epoch
目前我将时间存储在我的数据库中,如下所示:2010-05-17 19:13:37
但是,我需要比较两次,我觉得如果是像1274119041这样的unix时间戳会更容易做到。 (这两次是不同的)
那么如何将时间戳转换为 unix 时间戳?有没有简单的php函数呢?
【问题讨论】:
标签: php timestamp unix-timestamp epoch
您正在寻找strtotime()
【讨论】:
你想要strtotime:
print strtotime('2010-05-17 19:13:37'); // => 1274123617
【讨论】:
如果您使用 MySQL 作为数据库,它可以将日期字段作为带有 UNIX_TIMESTAMP 的 unix 时间戳返回:
SELECT UNIX_TIMESTAMP(my_datetime_field)
你也可以在 PHP 端使用strtotime:
strtotime('2010-05-17 19:13:37');
【讨论】:
如果你将时间存储在数据库中,为什么不让数据库也给你它的unix时间戳呢?参见UNIX_TIMESTAMP(date),例如。
SELECT UNIX_TIMESTAMP(date) ...;
数据库还可以进行日期和时间比较和算术运算。
【讨论】:
获取unix时间戳:
$unixTimestamp = time();
转换为mysql日期时间格式:
$mysqlTimestamp = date("Y-m-d H:i:s", $unixTimestamp);
获取一些mysql时间戳:
$mysqlTimestamp = '2013-01-10 12:13:37';
将其转换为 unixtimestamp:
$unixTimestamp = strtotime('2010-05-17 19:13:37');
...将其与一个或一系列时间进行比较,以查看用户是否输入了实际时间:
if($unixTimestamp > strtotime("1999-12-15") && $unixTimestamp < strtotime("2025-12-15"))
{...}
Unix 时间戳也更安全。在检查(例如)之前的范围检查之前,您可以执行以下操作来检查 url 传递的变量是否有效:
if(ctype_digit($_GET["UpdateTimestamp"]))
{...}
【讨论】: