【问题标题】:How do I add hours to a timestamp type field from mysql database如何将小时数添加到 mysql 数据库中的时间戳类型字段
【发布时间】:2016-08-16 07:52:26
【问题描述】:

我想在 php 中为时间戳格式添加一个小时

这是我一直在尝试的:

在我的数据库中,我有一个名为 ts 的字段,如时间戳(它是捕获 CURRENT_TIMESTAMP 的时间戳字段)。 然后我在 codeigniter 中有一个 foreach 来显示我的结果。在我的结果中,我回显了 ts 变量,但它捕获的时间是错误的,所以我想更改时间并增加 2 小时。

这是我尝试过的代码:

foreach($row as $reg){
    $timestamp = $reg->ts;
    $date = new DateTime($timestamp);
    $nTime = $date->modify('+2 hour');
    echo $nTime;
}

它给了我这个错误:

遇到 PHP 错误 严重性:4096Message:类 DateTime 的对象无法转换为 stringFilename:libraries/Table.php 行号:353

【问题讨论】:

  • 你应该在插入时解决这个问题,也许?

标签: php mysql codeigniter


【解决方案1】:

使用 DateTime 对象时出现小错误。

foreach($row as $reg){
    $date = new DateTime();
    $date->setTimestamp($reg->ts);
    $date->modify('+2 hour');
    echo $date->format('Y-m-d H:i:s');
}

您可能希望使用不同的日期和时间格式!

【讨论】:

  • 从现在开始给我 2 小时,而不是 $timestamp 的时间
  • 美国/墨西哥城时区
  • CDT(中部夏令时间)UTC/GMT -5 小时
  • 它位于我无法控制的实时服务器上。我打电话给我的提供商,但他告诉我他无法更改这些设置
  • 抱歉,刚刚发现我的错误。我在我的代码中输入了它,而不是将 $timestamp 复制并粘贴为错误 $timstamp
【解决方案2】:

添加时间到日期的示例

$nTime = date("Y-m-d H:i:s", strtotime('+2 hours'))

注意 date("Y-m-d H:i:s") 用于手动设置TIMESTAMP


你的情况

foreach($row as $reg){
    $timestamp = date_create('2016-08-16 01:30:00'); 
    $date = new DateTime(date_format($timestamp,"Y/m/d H:i:s")); // 2016-08-16 01:30:00
    $nTime = date_modify($date, "+2 hours");
    echo date_format($nTime,"Y/m/d H:i:s"); // Output will be 2016-08-16 03:30:00
}

输出


您在问题中提到了“变量,但它捕获的时间是错误的”。这可能是你必须设置date_default_timezone_set("Country/City")

【讨论】:

  • 您为什么要尝试用一个完全不同的问题来回答这个问题? OP的问题只是在日期时间类中使用的一个简单方法
  • @Ghost 现在看来我与他的问题有关。感谢您的提示
  • 您可能想要测试 DateTime 功能。它不起作用。您不能使用时间戳初始化 DateTime 对象!
  • 您不能在 date() 函数中使用 DateTime 对象,也不能在日期格式字符串所属的参数 1 中使用
  • @RiggsFolly 谢谢伙计。现在它已修复并且工作正常。也经过测试
猜你喜欢
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
相关资源
最近更新 更多