Php 数据库中的Datetime值落后三小时

Php 数据库中的Datetime值落后三小时,php,mysql,datetime,timezone,Php,Mysql,Datetime,Timezone,我使用DATETIME作为列类型,并使用NOW()插入。当它打印出来时,它落后了三个小时。我该怎么做才能让它比东部时间提前三个小时工作 我正在使用php date格式化页面上的日期时间。如果使用NOW()存储在数据库中的日期不正确,则需要。如果只是在打印后不正确,则需要 编辑: 有关如何使用date()格式化日期的信息,请参阅 编辑2: 要么让GoDaddy更改设置(可疑),要么在插入表格时增加3小时。在表中设置日期时,请参阅以修改日期。类似date_add(now(),间隔3小时)的东西应该可

我使用
DATETIME
作为列类型,并使用
NOW()
插入。当它打印出来时,它落后了三个小时。我该怎么做才能让它比东部时间提前三个小时工作


我正在使用php date格式化页面上的日期时间。

如果使用NOW()存储在数据库中的日期不正确,则需要。如果只是在打印后不正确,则需要

编辑:

有关如何使用date()格式化日期的信息,请参阅

编辑2:

要么让GoDaddy更改设置(可疑),要么在插入表格时增加3小时。在表中设置日期时,请参阅以修改日期。类似date_add(now(),间隔3小时)的东西应该可以工作


您的确切问题已被描述。

如果使用NOW()存储在数据库中的日期不正确,则需要更改。如果只是在打印后不正确,则需要

编辑:

有关如何使用date()格式化日期的信息,请参阅

编辑2:

要么让GoDaddy更改设置(可疑),要么在插入表格时增加3小时。在表中设置日期时,请参阅以修改日期。类似date_add(now(),间隔3小时)的东西应该可以工作


您的确切问题已被描述。

请看一看。如果您使用GMT,我发现时间戳算法会容易得多,尤其是如果您的代码在多台机器上运行,或者修改MySQL服务器设置不是一个选项,或者您最终要处理不同的时区、日光节约等问题。

请看一看。如果您使用GMT,我发现时间戳算法会容易得多,尤其是如果您的代码在多台机器上运行,或者修改MySQL服务器设置不是一个选项,或者您最终要处理不同的时区、日光节约等问题。

我建议将日期插入UTC时区。这将在将来为您省去很多麻烦(日光节约问题等)

当我查询数据时,我使用以下PHP脚本

<?  while($row = mysql_fetch_array($registration)){ 

  $dt_obj = new DateTime($row['message_sent_timestamp']." UTC");
  $dt_obj->setTimezone(new DateTimeZone('Europe/Istanbul'));
  echo $formatted_date_long=date_format($dt_obj, 'Y-m-d H:i:s'); } ?>


您可以将datetimezone值替换为此处可用的值之一:

我建议将日期插入UTC时区。这将在将来为您省去很多麻烦(日光节约问题等)

当我查询数据时,我使用以下PHP脚本

<?  while($row = mysql_fetch_array($registration)){ 

  $dt_obj = new DateTime($row['message_sent_timestamp']." UTC");
  $dt_obj->setTimezone(new DateTimeZone('Europe/Istanbul'));
  echo $formatted_date_long=date_format($dt_obj, 'Y-m-d H:i:s'); } ?>


您可以将datetimezone值替换为此处可用的值之一:

如果我使用的是DATETIME,那么如何插入当前日期?谢谢,RyanYou将需要使用date(),这是用于格式化日期的标准php函数,并且需要使用我发布的链接更正php中的时区设置。我知道如何使用date(),我有,显示该日期很好。它只是在三个小时后进入我的数据库。知道我能做什么吗?我添加了:日期默认时区设置(“美国/纽约”);我查看了我的服务器变量,在时区下,它被设置为“SYSTEM”,如果它被设置为SYSTEM,那么这意味着MySQL使用的时区设置与它所在的机器相同。托管MySQL服务器的机器的时区设置是什么?如果我使用DATETIME,那么应该如何插入当前日期?谢谢,RyanYou将需要使用date(),这是用于格式化日期的标准php函数,并且需要使用我发布的链接更正php中的时区设置。我知道如何使用date(),我有,显示该日期很好。它只是在三个小时后进入我的数据库。知道我能做什么吗?我添加了:日期默认时区设置(“美国/纽约”);我查看了我的服务器变量,在时区下,它被设置为“SYSTEM”,如果它被设置为SYSTEM,那么这意味着MySQL使用的时区设置与它所在的机器相同。托管MySQL服务器的机器的时区设置是什么?