【问题标题】:Date Creation using PHP to suit HTML-input type date使用 PHP 创建日期以适应 HTML 输入类型的日期
【发布时间】:2013-11-04 03:24:50
【问题描述】:

我将日期存储在mysqlcoupon 表中,该表属于datetime 类型。我的日期存储在mysql 表中:-

2013-11-04 00:00:00

editing 通过 HTML 表单。我正在获取价值并将价值放入 HTML 表单中,如下所示:-

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

在哪里$edit['coupon'] = 2013-11-04 00:00:00

  • 问题是,它在表单中显示日期 1 天,并且在保存后没有对日期进行任何更改。日期已保存 1 天。 2013-11-03 00:00:00

每次 1 单击编辑并保存而不更改日期。它会回到 1 天:- 2013-11-02 00:00:00 -> 2013-11-01 00:00:00 -> 依此类推。

【问题讨论】:

    标签: php date datetime strtotime mktime


    【解决方案1】:

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

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

    date_default_timezone_set('Europe/Stockholm');
    


    在特定通话中设置时区:

    strtotime($date_str . ' ' . $timezone);
    


    您还可以检查您的默认时区:

    date_default_timezone_get();
    


    如您所见,“Europe/Stockholm”是代表时区的字符串。完整的时区列表可以参考 PHP 手册中的List of supported timezones

    (如果您使用 PHP > 5.2,则可以使用 DateTime 代替 strtotime。)

    编码愉快 :-)

    【讨论】:

    • 不。这不是时区问题。我认为问题可能是时间。在数据库中,时间设置为00:00:00,这可能是strtotime 将其视为 1 天前。
    • strtotime 不会把它当作 1 天前的事,如果是这样的话,PHP 将是有史以来最愚蠢的语言。检查自己echo date('Y-m-d' , strtotime('2013-11-02 00:00:00'));
    • 我建议你编辑你的问题,并解释更多,添加更多细节。
    猜你喜欢
    • 2015-10-18
    • 2020-11-02
    • 2015-09-14
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2014-09-18
    • 2015-09-27
    • 2019-10-07
    相关资源
    最近更新 更多