Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我有一个格式为YYYY-DD-MM的PHP字符串和MySQL中的时间戳,有没有一种好方法可以在它们之间进行转换?_Php_Mysql_Time_Timestamp_Date - Fatal编程技术网

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

如果我有一个格式为YYYY-DD-MM的PHP字符串和MySQL中的时间戳,有没有一种好方法可以在它们之间进行转换?,php,mysql,time,timestamp,date,Php,Mysql,Time,Timestamp,Date,我对比较日期字符串和MySQL时间戳感兴趣。然而,我并没有看到一个简单的转换。我是否忽略了一些显而易见的东西?从时间戳转换为格式: date('Y-m-d', $timestamp); 从格式化转换为时间戳: mktime(0, 0, 0, $month, $day, $year, $is_dst); 有关更多文档,请参阅和 在存储方面,是否使用MySQL日期格式作为格式化日期取决于您;作为整数存储为UNIX时间戳;或者可以使用MySQL的时间戳格式,将数字时间戳转换为可读格式。用于时间戳信

我对比较日期字符串和MySQL时间戳感兴趣。然而,我并没有看到一个简单的转换。我是否忽略了一些显而易见的东西?

从时间戳转换为格式:

date('Y-m-d', $timestamp);
从格式化转换为时间戳:

mktime(0, 0, 0, $month, $day, $year, $is_dst);
有关更多文档,请参阅和


在存储方面,是否使用MySQL日期格式作为格式化日期取决于您;作为整数存储为UNIX时间戳;或者可以使用MySQL的时间戳格式,将数字时间戳转换为可读格式。用于时间戳信息。

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

使用PHP函数。您可能需要在查询中使用mysql中的函数将mysql时间戳转换为Unix时间戳。

以下格式的日期字符串:

YYYY-MM-DD
YYYY-MM-DD HH:mm:ss
没有与之相关的时间。MySQL时间戳的形式如下:

YYYY-MM-DD
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';
}

通过使用MySQL的
UNIX\u TIMESTAMP()
函数,您可以避免在PHP中使用
strottime()
getdate()

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;
}

我希望这有帮助

只需调用一次strotime就可以替代整个函数。为什么要重新发明轮子?我的错是,我建造这个轮子是因为我在过去遇到了问题(我现在想不起来这个原因)。