Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-MYSQL时区-在回显行之前添加额外的小时数_Php_Mysql_Datetime_Timezone - Fatal编程技术网

PHP-MYSQL时区-在回显行之前添加额外的小时数

PHP-MYSQL时区-在回显行之前添加额外的小时数,php,mysql,datetime,timezone,Php,Mysql,Datetime,Timezone,我有一个MySQL表叫做温度 我的一个属性是“现在” 它显示服务器上的时间戳 模式: now (current_time), id (auto increment), temp (varchar 50) now属性示例 2018-06-07 11:19:46 2018-06-08 02:06:12 我无权更改服务器上的时间 在读取now值后,如何将5.5小时添加到now 我现在要读的代码 $sql = "SELECT id, now, temp FROM temperature"; $res

我有一个MySQL表叫做温度

我的一个属性是“现在” 它显示服务器上的时间戳

模式:

now (current_time), id (auto increment), temp (varchar 50)
now属性示例

2018-06-07 11:19:46
2018-06-08 02:06:12
我无权更改服务器上的时间

在读取now值后,如何将5.5小时添加到now

我现在要读的代码

$sql = "SELECT id, now, temp FROM temperature";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
   while($row = $result->fetch_assoc()) {
      echo "id: " . $row["id"]. " - Time: " . $row["now"]. " . - Temperature: ". $row["temp"]. "<br>";
  }

 } else {
echo "no data";
 }  
$sql=“立即选择id,从温度中选择温度”;
$result=$conn->query($sql);
如果($result->num_rows>0){
而($row=$result->fetch_assoc()){
echo“id:.$row[“id”]。-时间:.$row[“now”]。-温度:.$row[“temp”]。“
”; } }否则{ 回声“无数据”; }

这可能吗?我可以在回显前添加5.5小时吗?

使用函数strotime和date查看此示例代码 在回应之前再加上这个 例如:

  $selectedTime = $row['now'];
  $endTime = date("H:i:s" ,strtotime("+5 hours 50 minutes", strtotime($selectedTime)));
  echo $endTime;

看来你的问题涉及到了。该时区在地图中的名称为
Asia/Kolkata

从你的问题中我猜你是想把时间从U转换成印度时间

您的
now
属性是否作为
DATETIME
TIMESTAMP
列存储在表中很重要。你的问题没有提供足够的信息让我们知道这一点;这两种数据类型都使用文本字符串进行渲染,如
2018-07-08 13:31:20

如果您的
now
属性是一个
时间戳
,那么您的情况很好。为什么?MySQL参照通用时间存储
时间戳
值。因此,您所需要做的就是设置MySQL连接的时区,然后通过逐个运行这两个查询来执行select查询,并分别调用
query()
方法

SET time_zone = 'Asia/Kolkata';
SELECT id, now, temp FROM temperature;
MySQL将把你的
now
值转换为印度时间

如果
now
列具有
DATETIME
数据类型,则表示存储表中的数据时不引用任何时区。在这种情况下,您可以使用此查询将这些值从UTC转换为印度时间

 SELECT id, CONVERT_TZ(now,'UTC','Asia/Kolkata') AS now, temp FROM temperature

为了使用MySQL的时区支持,您可能需要填充服务器的时区表。请告诉您的服务器管理员这样做,或者查看此页面以获取说明

您可以在查询中使用MYSQL的ADDTIME函数

SELECT id, ADDTIME(now, "5:30:0") AS now_added FROM temprature;

是的,你可以。使用strtotime和date。您的
now
列的“温度”表中使用的数据类型是否可能重复<代码>日期时间
TIMESTAMP
?@O.Jones请参见下面的代码部分
now属性示例
问题中的“我可以在回显前添加5.5小时吗?”5.5小时是指5小时30分钟,我假设
“$row['now']”
这是什么?@RaymondNijland,因为它包含在
它应该返回数组项的字符串值。但是
是不需要的,它们不应该造成任何伤害。我知道它是什么以及它是如何执行的。我的意思是“这是什么?”更像是“天哪!!!“.String插值在PHP中是一个不好的编程习惯,而且它的执行速度比非String插值慢(不是很多,而是更慢),在我写的时候,我忘记了删除这些内容。”" ... 但重点在第二行$selectedTime只是为了选择一个时间,所以如果你有精确的小时-分钟,那么你需要附上这些“。。。在我的示例中,我已经删除了它们,就像我上面所说的,我忘记了删除它们。