-2

我对 PHP 编程相当陌生,因此面临一个奇怪的问题,通过不同的论坛,我能够学习如何将不同格式的日期转换为我们想要的格式,但今天这是不可能的,无论如何我总是得到 01 Jan我在变量中给出了什么,这很奇怪,因为以前它工作得很好。我的代码如下:

我正在使用 date 和 strtotime PHP 函数的组合,如:

$coll_date_1[$i] = $row->coll_date_1;   //this is 08-08 i.e 8 Aug

$coll_date_1[$i] = date('d M',strtotime($coll_date_1[$i]));  //this return 01 Jan

第一行将数据库中的值赋给变量,第二行是将它们转换为所需格式的函数。我知道我犯了一个愚蠢的错误,但似乎无法指出那是什么......

4

3 回答 3

3

发生这种情况是因为08-08不是有效的日期格式。

您可以尝试在其前面添加一个“假”年份,例如2000-08-08,或当前年份,例如2013-08-08,然后

$coll_date_1[$i] = 'YEAR-'.$row->coll_date_1; // "YEAR" could be "2000" or the current year
date('d M', strtotime($coll_date_1[$i]));

无论如何,您应该更改您的数据库以以正确的格式处理日期,YYYY-MM-DD例如在 MySQL 中您将使用date类型字段。

编辑:

如果您无法更改数据库结构,但拥有PHP 5.3+,则可以使用DateTime该类将日期解析为

DateTime::createFromFormat('m-d', $row->coll_date_1)->format('d M');
于 2013-08-07T12:19:37.563 回答
2

您可以使用以下方式指定格式DateTime::createFromFormat

$date = DateTime::createFromFormat("m-d","08-08")//Switch to "d-m" as needed
$date->format("d M");

这样可以更轻松地更改前格式和后格式。

编辑:如前所述。考虑将您的列存储为适当的日期或日期时间。这将允许您在需要时使用数据库的日期函数。

于 2013-08-07T12:24:08.897 回答
0

//这是08-08,即8月8日

虽然它应该是2013-08-08。将您的数据库字段
更改为正确的格式。问题解决了。

于 2013-08-07T12:19:52.220 回答