使用PHP创建日期以适应HTML输入类型日期

使用PHP创建日期以适应HTML输入类型日期,php,date,datetime,strtotime,mktime,Php,Date,Datetime,Strtotime,Mktime,我在mysql的优惠券表中存储日期,该表属于datetime类型。我的日期存储在mysql表中,如下所示:- 2013-11-04 00:00:00 而则通过HTML表单编辑。我正在以HTML格式获取值并将值放入,如下所示:- <input id="unlisted" type="date" name="coupon" class="input-large" value="<?php echo gmdate('Y-m-d' ,strtotime($edit['coupon']))

我在
mysql
优惠券
表中存储日期,该表属于
datetime
类型。我的日期存储在
mysql
表中,如下所示:-

2013-11-04 00:00:00
则通过HTML表单编辑
。我正在以HTML格式获取值并将值放入,如下所示:-

<input id="unlisted" type="date" name="coupon" class="input-large" 
value="<?php echo gmdate('Y-m-d' ,strtotime($edit['coupon'])); ?>" />

问题可能是由于不同的时区造成的。PHP安装的默认时区与实际位置不同。要解决这个问题,您可以简单地设置默认时区或在特定函数调用时设置它

您可以通过编辑
PHP.ini
来设置PHP安装的默认时区。您还可以通过编程方式更改默认时区:

date\u default\u timezone\u set('Europe/Stockholm');

要设置特定通话的时区:

strotime($date_str.'.$timezone);

您还可以检查默认时区:

date\u default\u timezone\u get();

如您所见,“Europe/Stockholm”是表示时区的字符串。有关时区的完整列表,请参阅PHP手册

(如果使用PHP>5.2,则可以使用DateTime而不是StrotTime。)


快乐编码:-)

不。这不是时区问题。我想问题可能是时间。在数据库中,时间被设置为
00:00:00
,这可能
strotime
将其视为1天之前的时间。strotime不会将其视为1天之前的时间,如果它这样做,PHP将是所有时间中最愚蠢的语言。自己检查回声日期('Y-m-d',标准时间('2013-11-02 00:00:00')。我建议您编辑您的问题,并进行更多解释,添加更多详细信息。