Php 在PST中显示unix时间会显示额外的一小时

Php 在PST中显示unix时间会显示额外的一小时,php,unix,pst,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'); $t

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

$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 } ?>
但每当我尝试在insert查询中添加超过48小时(秒)的时间时,它总是额外添加一个小时,就像我添加72小时一样

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

所以我不明白为什么它显示的是3月10日凌晨4:30,而不是3:30,因为多了一个小时。有人能告诉我如何修复它吗。

这是由于夏令时。当日期不接近3月10日或11日时,你还面临问题吗

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

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注入漏洞。您应该阅读以下内容:

您知道添加172800并不十分准确。我建议改为使用+2天。夏令时之类的东西在添加秒数时会搞砸。您的问题中没有我们可以帮助您的代码。添加一个我们可以使用的示例,但我在mysql中将time和time_end设置为INT类型,如果我使用+2天,它将不起作用?这就是strotime的作用。那么我如何将这些数据类型从INT改为+2天才能起作用呢?是的,我尝试添加一个,直到3月14日,它仍然会额外增加一个小时
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);