我正在尝试将以下字符串(或这次的字符串(转换为时间戳:
Closing date: 02 Apr 15
Closing date: 06 May 15
我的代码如下:
$start_date = explode("Closing date: ", $string);
$start_date = DateTime::createFromFormat('DD M yy', $start_date[1]);
但是当我尝试回显$start_date->getTimestamp(( 时,它告诉我
Fatal error: Call to a member function getTimestamp() on a non-object
知道我可能做错了什么吗?DD M yy 似乎是要使用的正确日期格式。
它应该是:
$start_date = explode("Closing date: ", $string);
$start_date = DateTime::createFromFormat('d M y', $start_date[1]);
您需要传递给DateTime::createFromFormat()
以帮助它解析数据的格式是 d M y
。我从文档中提取了这些字母的重要性:
-
d
和j
:月份中的日期,2位数字,带或不带前导零(01
到31
或1
到31
(; -
F
和M
:一个月的文本表示,例如一月或九月(January
到December
或Jan
到Dec
(; -
y
:一年的两位数表示(假定在1970-2069
范围内(;示例:99
或03
(将分别解释为1999
和2003
(。
您需要将"DD M yy"a更改为正确的日期格式"d M y">
$start_date = explode("Closing date: ", 'Closing date: 02 Apr 15');
$start_date = DateTime::createFromFormat('d M y', $start_date[1]);
var_dump($start_date)
object(DateTime)[3430]
public 'date' => string '2015-04-02 15:27:28.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/London' (length=13)
DD M yy
实际上不是正确的格式。摘自 DateTime::createFromFormat 文档:
D 和 l - 一天的文本表示 - 周一至周日或周日 到周六
在打电话之前尝试做一var_dump
$start_date
getTimestamp
,我敢打赌实际上是false
:
返回新的日期时间实例,失败时返回 FALSE。
您需要使用的格式是 d M y
.
为什么不使用strtotime
简单地将日期转换为timestamps
格式
$string="Closing date: 02 Apr 15";
$start_date = explode("Closing date: ", $string);
print strtotime($start_date[1]);