php - PHP 和 SQL 中的日期格式错误

标签 php mysql datetime

我在处理日期格式时遇到问题。 在我的代码中,我尝试计算从指定日期开始的到期日期,然后将其保存在我的 MySQL 数据库中。

问题是我总是收到这个错误:

Fatal error: Call to a member function add() on a non-object

我无法解决它。 例如,如果我手动将 $scadenza_contratto 替换为特定日期,它会起作用,例如:

$expiration_date = DateTime::createFromFormat('Y-m-d', '2016-02-10');

在这种情况下,它可以工作,但我需要从 $scadenza_contratto 接收日期。 你能帮我吗? 这是我的代码:

if($anno > 0 && $giorno > 0 && $mese >0){
$scadenza_contratto = $anno."-".$mese."-".$giorno;
//$scadenza_contratto = date('Y-m-d', strtotime("+{$scadenze} months", strtotime($scadenza_contratto)));

$sql1 = "SELECT * FROM scadenze WHERE contratto_id=$contratti_id";

$row1 = mysql_fetch_assoc( mysql_query($sql1) );
echo "tipo ".$row1['tipo'];

 if(!$row1){

 for ($m = $scadenze; $m <=60 ; $m += $scadenze){
   //add $m to activation_date
   $scadenza_contratto = $anno."-".$mese."-".$giorno;
   $expiration_date = DateTime::createFromFormat('Y-m-d', '$scadenza_contratto');
   $expiration_date->add(new DateInterval('P'.$m.'M'));
   //do something with $expriration_date 
   echo "Expire: ".$expiration_date->format('Y-m-d'). "<br>";
   $expiration_db = $expiration_date->format('Y-m-d H:i:s');
   $time=time();

//mysql_query("INSERT INTO contratti (nome_area) VALUES('$nome_area','$giorno','$mese','$file_name','$attiva','$id_voce','$nome_azienda','$time')");
  mysql_query("INSERT INTO scadenze (nome_azienda,nome_voce,contratto_id,nome_area,scadenza,tipo,created_date) VALUES ('$nome_azienda','$nome_voce','$contratti_id','$nome_area','$expiration_db','$scadenze','$time')");

  } 

 }
}

最佳答案

第一个问题:

$expiration_date = DateTime::createFromFormat('Y-m-d', '$scadenza_contratto');

您正在尝试将字符串文字 '$scadenza_contratto' 转换为日期,而不是字符串变量 $scadenza_contratto 的值。

第二个问题是您的格式掩码,因为您将 $mese$giorno 的值视为整数,那么它们的值可能小于 10;并且您当前的掩码假定它们始终是两位数的值(如果小于 10,则带有前导 0),但情况可能并非如此

将此更改为

$expiration_date = DateTime::createFromFormat('Y-n-j', $scadenza_contratto);

关于php - PHP 和 SQL 中的日期格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36519068/

相关文章:

php - 按数值排列的 Glob 数组

mysql - 将逗号分隔的参数传递给mysql中的存储过程

php - MySQL插入列一半插入

java - Java Date-Time API 中有没有方法可以获取一周中所有日期的集合?

php - 如何在 Laravel 中按层次顺序显示一对多关系数据?

php - 如何禁用多对多关系的级联删除?

php - 如何删除数据库中不存在的文件

ruby-on-rails - 如何在 Rails 表单中的 datetime_select 上应用时区

mysql - 将 vb.net 中的 TimeofDay 转换为分钟

php - 如何将 WordPress 子站点从临时服务器迁移到实时服务器(在 WordPress 多站点上)?