PHP-MYSQL时区-在回显行之前增加其他时间

时间:2018-07-08 12:18:30

标签: php mysql datetime timezone

我有一个称为温度的MySQL表

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

模式:

now (current_time), id (auto increment), temp (varchar 50)

现在属性的示例

2018-06-07 11:19:46
2018-06-08 02:06:12

我无权更改服务器上的时间。

在阅读now值之后,如何添加5.5小时到现在?

我当前要阅读的代码

$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";
 }  

这可能吗?我可以在回声之前增加5.5小时吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:-1)

您的问题似乎涉及Indian national time zone (+5:30)zoneinfo database中的时区名称为Asia/Kolkata

我从您的问题中猜测,您正在尝试将时间从U niversal Time Coordinated (UTC)转换为印度时间。

重要的是,您的now属性是作为DATETIME还是TIMESTAMP列存储在表中。您的问题显示的信息不足以使我们知道;两种数据类型均使用2018-07-08 13:31:20之类的文本字符串呈现。

如果您的now属性是TIMESTAMP,则情况很好。为什么? MySQL根据世界标准时间存储TIMESTAMP值。因此,您所需要做的就是设置MySQL连接的时区,然后通过分别调用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的时区支持,您可能需要填充服务器的时区表。告诉您的服务器管理员执行此操作,或查看此页面上的说明。 https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html

答案 2 :(得分:-3)

使用函数strtotime和date查看此示例代码 只需在回显之前添加 示例:

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