在PST中显示Unix时间会显示一个额外的小时

时间:2019-03-08 13:09:57

标签: php unix pst

因此,我有一个非常基本的表单设置,并且一旦提交该查询,我就会运行该查询

$insert = "INSERT INTO data(name, time, time_end) 
VALUES ('".$name."', '".time()."', '".time()."' + 176400) ;";
mysqli_query($conn, $insert);

我在头文件中已经提到过,以便在PST中显示时间

date_default_timezone_set('America/Los_Angeles');
$time = time();

并要在PST中显示“数据”中的所有信息,请在比较页面中保存此代码

$session = "SELECT * from data";
$session_query = mysqli_query($conn, $session); ?>

<table>

  <tr>
    <th>Name</th>

    <th>Started at</th>
    <th>Ending at</th>
  </tr>

<?php

while($data = mysqli_fetch_assoc($session_query)) { ?>

 <tr>
    <th><?php echo $data['name']; ?></th>



    <th><?php

    $start = $data['time'];
    echo date("F j, Y, g:i a",$start); ?></th>

    <th><?php
    $end = $data['time_end'];
    echo date("F j, Y, g:i a",$end); ?></th>


  </tr>

  <?php

}
?>

</table>
<?php } ?>

这似乎只能在我添加以下内容或48小时之前有效。 就像我在插入查询中添加+172800一样,它确实显示

March 7, 3:30 am - March 9, 3:30 am

但是,每当我尝试在插入查询中添加48小时以上(以秒为单位)时,它都会不断增加一个小时,就像我添加72小时一样

 March 7, 3: 30 am - March 10, 4:30 am

所以我不明白为什么它在3月10日凌晨4:30而不是凌晨3:30(在一小时内)显示,有人可以告诉我如何解决它。

2 个答案:

答案 0 :(得分:1)

简单的解决方案是使用strtotime:

date_default_timezone_set('America/Los_Angeles');
$insert = "INSERT INTO data(name, time, time_end) VALUES ('".$name."', '". strtotime('now')."', '". strtotime('+2 days')."') ;";
mysqli_query($conn, $insert);

您的代码中似乎存在一个sql注入漏洞。您应该阅读以下内容:How can I prevent SQL injection in PHP?

答案 1 :(得分:0)

这是由于夏令时。如果日期不在3月10日或3月11日附近,您还会遇到问题吗?