weixin_33696822
2019-11-06 01:00
采纳率: 0%
浏览 47

DateTime PHP的问题

I have made a chat using php, sql and ajax. All the message are stored in DB with a datetime format like this 0000-00-00 00:00:00. The issue: every day, from midnight (00:00:00) to 00:59:59 the messages are stored in DB, but not visualized in chat. In the rest of the day it work perfectly. I think it depend on UTC time zone. My timezone is UTC +1 (so the day doesn't go from 0 to 23, but from 1 to 0).

Actually I use this PHP code:

$now = new DateTime(null, new DateTimeZone('Europe/Rome'));
$now = $now->format('Y-m-d H:i:s');

The column where I store this datetime:

'time' datetime NOT NULL DEFAULT '0000-00-00 00:00:00'

The date are always stored correctly. Someone can help me?

EDIT: to call data stored I use this:

$datetime="SELECT var1, var2, time FROM chat WHERE time >= DATE_SUB(NOW(),INTERVAL 1 HOUR) ORDER BY time ASC";
$datetimeX = $db->prepare($datetime);
$datetimeX->execute();

while($row = $datetimeX->fetch(PDO::FETCH_ASSOC)) {

echo "<span style='color:#f2f2f2;'>" . $row['time'] . " </span>";

//other stuff
}

图片转代码服务由CSDN问答提供 功能建议

                    

我使用php,sql和ajax进行了聊天。 所有消息都以日期时间格式存储在DB中,例如0000-00-00 00:00:00。 问题是:每天从午夜(00:00:00)到00:59:59,消息都存储在DB中,但无法在聊天中看到。 在一天的其余时间内,它可以完美运行。 我认为这取决于UTC时区。 我的时区是UTC +1(所以一天不是从0到23,而是从1到0)。

实际上我使用此PHP代码:

  $ now = new DateTime(null,new DateTimeZone('Europe / Rome'));
 $ now = $ now-> format('Y-m-d H:i:s');
  

 

我存储此日期时间的列:

 'time'datetime NOT NULL DEFAULT'0000-00-00 00:00:00'
  

 

日期始终正确存储。 有人可以帮助我吗?

编辑:调用存储的数据,我使用以下方法:

  $ datetime =“ SELECT var1,var2,FROM chat where time> = DATE_SUB(NOW(),INTERVAL 1 HOUR)ORDER BY time ASC”;
 $ datetimeX = $ db-> prepare($ datetime);
 $ datetimeX-> execute();

 while($ row = $ datetimeX-> fetch(PDO :: FETCH_ASSOC)){

 回声“ ”。  $ row ['time']。  “ ”;

 //其他的东西
 }
  
     
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • weixin_33711647 2019-11-06 01:24

    You may try this

    $dateTimeZone = new DateTimeZone("Europe/Rome");
    $dateTime = new DateTime("now", $dateTimeZone);
    $Offset = $dateTimeZone->getOffset($dateTime);
    $now = date("Y-m-d H:i:s", time() + $Offset);
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题