【发布时间】:2025-12-12 03:00:01
【问题描述】:
当我通过FROM_UNIXTIME() 存储日期时,日期存储在前一天。
我的调试代码:
$date = date("m-d-Y", time());
$date_unix = explode('-', $date);
if (count($date_unix) == 3) {
list ( $m, $d, $y ) = $date_unix;
$date_unix = mktime(0, 0, 0, $m, $d, $y);
}
echo "<br />Date: " . $date;
echo "<br />Date after mktime: " . $date_unix;
echo "<br />Date manual mktime: " . date("m-d-Y", mktime(0,0,0,8,18,2014));
我正在使用来自服务器的日期,将其更改为带有 mktime() 的 unixtime,并尝试使用 FROM_UNIXTIME() 将其存储在数据库中。
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$sql = "INSERT INTO data ( data ) VALUES ( FROM_UNIXTIME(:date_unix) )";
$st = $conn->prepare($sql);
$st->bindValue(":date_unix", $date_unix, PDO::PARAM_INT);
$st->execute();
在所有这些混乱之后,mysql仍然存储前一天的日期。
例如:今天是 08/18/2014,在数据库中是 2014-08-17
服务器中的 date_default_timezone 是“America/Cuiaba”,如果我更改时区,则不会发生任何变化。
【问题讨论】:
-
你到底想用那个日期做什么?这没有任何意义。
-
据我所知,SQL 的时间/日期格式 (DATETIME) 存储为
YYYY-MM-DD,而您正在使用m-d-Y -
我在创建
mktime()后使用unixtime来存储FROM_UNIXTIME() -
@JohnConde 我怀疑你会碰这个,即使有一根 20 英尺长的杆子;)即使是时间之父也必须时不时地喘口气。 不能全部保存。
-
@Fred-ii- 虽然我怀疑你的评论认识到了问题的症结所在,但他们无法清楚地表达他们想要做什么的事实使得这个问题无法回答。很遗憾,因为这可能是一个非常简单的问题。
标签: php mysql date unix-timestamp mktime