如果我有一个格式为 YYYY-DD-MM 的 PHP 字符串和 MySQL 中的时间戳,有没有好的方法在它们之间进行转换?

StackOverflow https://stackoverflow.com/questions/20598

我有兴趣在日期字符串和 MySQL 时间戳之间进行比较。然而,我没有看到一个简单的转换。我是否忽略了一些显而易见的事情?

有帮助吗?

解决方案

从时间戳转换为格式:

date('Y-m-d', $timestamp);

从格式化转换为时间戳:

mktime(0, 0, 0, $month, $day, $year, $is_dst);

日期MK时间 以获得更多文档。

当涉及到存储时,由您决定是否使用 MySQL DATE 格式作为格式化日期进行存储;作为一个整数,用于存储为 UNIX 时间戳;或者您可以使用 MySQL 的 TIMESTAMP 格式,它将数字时间戳转换为可读格式。 检查 MySQL 文档 获取时间戳信息。

其他提示

您可以避免使用 strtotime() 或者 getdate()PHP 通过使用 MySQL 的 UNIX_TIMESTAMP() 功能。

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

生成的数据将是标准整数 Unix 时间戳,因此您可以直接比较 time().

我写了这个小函数来简化过程:

/**
 * Convert MySQL datetime to PHP time
 */
function convert_datetime($datetime) {
  //example: 2008-02-07 12:19:32
  $values = split(" ", $datetime);

  $dates = split("-", $values[0]);
  $times = split(":", $values[1]);

  $newdate = mktime($times[0], $times[1], $times[2], $dates[1], $dates[2], $dates[0]);

  return $newdate;
}

我希望这有帮助

strtotime()获取日期() 是两个可用于从字符串和时间戳获取日期的函数。不过,没有一个标准库函数可以在 MySQL 和 PHP 时间戳之间进行转换。

使用PHP 日期 功能。您可能必须使用以下命令将查询中的 mysql 时间戳转换为 Unix 时间戳 UNIX_TIMESTAMP mysql 中的函数。

格式为的日期字符串:

YYYY-MM-DD

没有与之相关的时间。MySQL 时间戳的形式如下:

YYYY-MM-DD HH:mm:ss

要比较两者,您必须在日期字符串中添加时间,例如午夜

$datetime = '2008-08-21'.' 00:00:00';

然后使用一个函数来比较它们之间的 epoc 时间

if (strtotime($datetime) > strtotime($timestamp)) {
    echo 'Datetime later';
} else {
    echo 'Timestamp equal or greater';
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top