在 PST 中显示 unix 时间会显示一个额外的小时
Displaying unix time in PST shows an extra hour
所以我有一个非常基本的表单设置,一旦提交运行我就有了这个查询
$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 中显示来自 'data' 的所有信息,我将此代码放在差异页面中
$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 上午(额外一小时),谁能告诉我如何解决它。
这是由于夏令时。当日期不在 3 月 10 日或 11 日附近时,您是否仍然遇到问题?
简单的解决方案是使用 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?
所以我有一个非常基本的表单设置,一旦提交运行我就有了这个查询
$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 中显示来自 'data' 的所有信息,我将此代码放在差异页面中
$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 上午(额外一小时),谁能告诉我如何解决它。
这是由于夏令时。当日期不在 3 月 10 日或 11 日附近时,您是否仍然遇到问题?
简单的解决方案是使用 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?