【问题标题】:PHP date: non well formed numeric value encounteredPHP日期:遇到格式不正确的数值
【发布时间】:2012-07-28 08:05:44
【问题描述】:

我正在尝试将 PHP 表单中的日期存储到 MS SQL 数据库中,但我真的很挣扎。日期是字符串格式,并且是 'DD/MM/YYYY' 格式,所以我尝试使用 strtotime() 来转换它,但我只是从中得到 1970-01-01 01:00:00。

我试过的代码如下:

$requested = $_REQUEST["TextboxRequiredBy"];
var_dump($requested);
echo "<br/>";
$daterequested = date("Y-m-d H:i:s", strtotime($requested));
echo $requested . " becomes " . $daterequested . "<br/>";
mssql_bind($stmt, "@Parameter", $daterequested, SQLFLT8, false);

我在屏幕上看到的是:

string(10) "31/07/2012" 
31/07/2012 becomes 1970-01-01 01:00:00

Warning: mssql_bind(): Unable to set parameter in xxx.php on line 110 
Warning: mssql_execute(): message: Procedure or function 'SPNAME' expects 
parameter '@Parameter', which was not supplied. (severity 16) in xxx.php

我四处搜索,但似乎找不到成功转换字符串的方法。我在另一个运行日期比较的页面上使用了以下内容,但这会返回一个错误,即 date_format() 期望参数 1 为 DateTime,给定布尔值:

$datefrom = date_create($requested);
$daterequestedfrom = date_format($datefrom,'Y-m-d H:i:s');

谁能建议我如何成功地将字符串转换为日期?

【问题讨论】:

    标签: php sql-server


    【解决方案1】:

    该日期格式不是默认格式。您可能想查看 date_create_from_format 函数。这将允许您指定您尝试输入的时间字符串的格式。

    Link to PHP documentation

    【讨论】:

    • 现在我觉得自己完全是个白痴……我在此页面的表单字段上使用了 JQuery datePicker,另一个成功地将输入的日期与数据库中存储的日期进行了比较。您的回答让我意识到我没有使用完全相同的函数调用,并且两者的日期格式设置不同!改变了它,现在它工作正常。感谢您的信息,将来会考虑使用该功能!
    【解决方案2】:

    由于某种原因,PHP 不喜欢 strtotime 中的斜线。将它们转换为点,脚本应该可以工作。

    $requested = str_replace('/', '.', $_REQUEST["TextboxRequiredBy"]);
    

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2019-02-15
      • 2014-09-18
      相关资源
      最近更新 更多