【问题标题】:How can I convert the date format from html5 php [duplicate]如何从 html5 php 转换日期格式 [重复]
【发布时间】:2014-06-29 04:12:44
【问题描述】:

我有一个输入类型为日期的表单。现在,我想从表单中获取选定的日期,添加 30 天并保存到我的 MySQL 数据库中。这是一个例子。

我想从这个 --> 2014-06-20

这个也是 --> 2014-07-20 (+30days)

这是我的 HTML:

<label for ="lb_Date">Select your Date </label>
<input type="date" class="form-control" id="DateInput" name="date"placeholder="" required>

这是我的 PHP

$date = $_POST['date'];
$newDate = new DateTime('$date');
$newDate->modify('+30 day');
echo $date->format('YY-mm-dd');

echo 给了我正确的结果,但错误消息不允许在我的 MySQL 数据库中保存 $newDate。

错误信息:

可捕获的致命错误:DateTime 类的对象无法转换为字符串 在此处输入代码...

怎么了?为什么我需要转换一些东西,输出正好适合 MySQL。我不明白。

【问题讨论】:

  • $newDate = new DateTime('$date'); 里面是字符串文字,不是变量的值
  • “回声给了我正确的结果”...??您提供的代码可能无法正常工作。请澄清或修复您问题中的代码。
  • 这个问题是有效的,但HTML与它无关。让它成为 HTML5。严格来说,这是一个日期格式问题。
  • 将您的 mysql 部分代码发送给我们......我们可以在这里为您提供帮助......

标签: php mysql date format


【解决方案1】:

您正在做的是用字符串文字为 datetime 对象提供内容,而不是 $_POST 中的变量值:

$newDate = new DateTime('$date');

我不知道这是不是一个错字,但你应该把它改成这样:示例:

$date = $_POST['date'];
$newDate = new DateTime($date); // remove those quotations
$newDate->modify('+30 day');
// should not be YY-mm-dd but Y-m-d
echo $newDate->format('Y-m-d');// 2014-07-20
// not echo $date->format('YY-mm-dd'); $date is not your datetime object

【讨论】:

  • 嗨!它只是工作,但是当我想将结果($newDate)保存在我的 mysql 数据库中时,我得到了同样的错误。这是我的代码: $sql_insert_coupon = "INSERT INTO coupon ( cashed, valid_from, valid_to, coupon_code) VALUES (NULL, '$date', '$newDate','$couponCode');"; mysql_query($sql_insert_coupon);.. 当我在 valid_from 中插入来自 POST 的日期时,它可以正常工作,但是当我将日期添加到 newDate 时,它​​只会出现相同的错误消息。
  • @user3787069 你给数据库的日期时间对象不是格式化的日期,先把它放在一个变量中,$final_date = $newDate-&gt;format('Y-m-d');,然后将它插入到数据库中,$sql_insert_coupon = "INSERT INTO coupon ( cashed, valid_from, valid_to, coupon_code) VALUES ( NULL, '$date', '$final_date','$couponCode');";
  • 非常感谢!!!!!!!!!!!!
  • @user3787069 很高兴它有帮助
【解决方案2】:

你的 PHP 代码应该是这样的:

$date = $_POST['date'];
$newDate = new DateTime('$date');
$newDate->modify('+30 day');
echo $newDate->format('Y-m-d');

您调用的是字符串 ($_POST['date']) 的方法,而不是对象。

【讨论】:

    【解决方案3】:

    您的 PHP 部分应如下所示..

    $date = $_POST['date'];
    $newDate = new DateTime($date);
    $newDate->modify('+30 day');
    echo $newDate->format('Y-m-d');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 2011-01-30
      • 2015-04-21
      • 2021-04-07
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多