我将 javascript 时间戳数据发送到 php,以添加到我输入 TIMESTAMP 的 mysql 中:
数据库 - 开始时间类型:
现在我尝试使用 ajax 将时间戳从 javascript var startTime = Date.now();
发送到 php,我需要在其中转换为 mysql 的 TIMESTAMP 类型...所以我尝试:
$datum = $app->request->post('startTime');
$startTime = $datum->format('Y-m-d H:i:s'); //FIRST ATTEMP
$startTime = date("Y-m-d H:i:s", $datum); //SECOND TRY
上面我写了两个我尝试过的案例,但都不起作用...我如何将其转换为正确的格式以将其添加到数据库...
您可能会问,为什么在 PHP 中有这个,为什么要用 JS 得到它? 因为我的应用程序将使用澳大利亚(以及世界各地)的人并且服务器在欧洲,所以如果我使用 php 服务器时间那么我会输入错误的日期
最佳答案
好吧,首先,您应该确保 $datum
中的数据实际上是一个数字:
$datum = $app->request->post('startTime');
if ( ! ctype_digit($datum)) {
die('Invalid startTime!');
}
在 Javascript 中,Date.now()
方法返回以 毫秒 为单位的时间戳。处理日期和诸如此类的东西的 PHP 函数使用秒,因此您必须将它除以 1000(毫表示“千”)以将其转换为秒:
$datum = ($datum / 1000);
如果您已经在浏览器中完成了此操作,那么您当然应该忽略它。
在将秒数插入数据库之前,您必须将秒数转换为 MySQL 可以理解的格式。 DATETIME
/TIMESTAMP
格式为 YYYY-MM-DD HH:MM:SS
。在 PHP 中,您可以像这样格式化它:
$datum = date('Y-m-d H:i:s', $datum);
关于Javascript 时间戳转 php - mysql 时间戳类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27338161/