我正面临unix时间戳、php和mysql的问题,如果有人能向我解释我出了什么问题,或者如果我没有,那么我为什么要得到我得到的数据,那就太好了。
当我使用jquery将年月日格式的日期传递给php时,时间戳中的小时和分钟默认设置为23:00:00,尽管我没有在请求中传递此信息。所以我的问题是这个幻影23:00从哪里出现?
工作流程:
使用datepicker的:datepicker -> php -> mysql =时间戳,其时间设置为23:00:00。
不使用datepicker的: php->mysql =时间戳,带有正确的时间和分钟。
感谢您的阅读。
编辑: PHP代码:
PHP code:
$setdatealpha = $_POST['datepickeralpha'];
$setdatealpha = strtotime($setdatealpha);
// With this, I am inserting into MySQL like so:
$sql = "INSERT INTO TABLE (DATE_FIELD) VALUES (?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s',$setdatealpha);
$stmt->execute();现在,当我读取输入的信息,并通过日期(‘Y-m-d,时间戳)将其转换为日期时间格式时,日期输入正确,时间条目具有23:00:00的值。
如果我通过strtotime (日期)进行标准会话,则不会发生这种情况;
发布于 2017-03-20 12:18:38
根据当前可用的信息,我建议您确保每个时间戳都在UTC。我总是遇到时区问题。
对于PHP,比如:$current_timestamp = strtotime($date." UTC");
对于jQuery数据报警器,我发现了一个堆栈溢出线程:如何在jQuery日期选择器中获取utc时间
发布于 2017-03-20 12:13:25
很可能是时区。
首先,让我们澄清一下上下文。strtotime()生成一个Unix时间戳,显然您可以用它给DATE_FIELD提供信息。如果这样做有效,就意味着该列是一个INTEGER。在这种情况下,您之后会做一些事情来显示日期,并且您还没有共享这个部分--而且,MySQL在这里是无辜的,因为它甚至不知道DATE_FIELD是什么意思。
虽然strtotime()可以提供一个原始日期,但它也需要生成时间。它做不到,除非它知道时区。此外,当您有一个带有Unix时间戳的整数变量并且希望将它显示为适当的日期时,您还需要知道时区。
在这两种情况下,如果不提供PHP,PHP将使用默认值:
var_dump(date_default_timezone_get());因此,您可能希望设置一个已知的,例如,set()。然而,您的用户可能有一个与您不同的时区,因此您的用户对他们来说毫无意义。由于您提示用户要一个原始日期(没有时间),所以时间实际上可能与问题无关。在这种情况下,您可能想:
DATE_FIELD的DATE类型。strtotime()和类似的东西。您可能想要使用校验日期()代替。https://stackoverflow.com/questions/42863897
复制相似问题