我正在尝试将以下字符串(或此时的字符串)转换为时间戳:
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似乎是正确的日期格式。
答案 0 :(得分:2)
你需要改变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)
答案 1 :(得分:2)
应该是:
$start_date = explode("Closing date: ", $string);
$start_date = DateTime::createFromFormat('d M y', $start_date[1]);
您需要传递给DateTime::createFromFormat()
以帮助其解析数据的格式为d M y
。我从documentation:
d
和j
:每月的某一天,包含或不包含前导零的2位数(01
至31
或1
至{{1} }); 31
和F
:一个月的文字表示,例如1月或9月(M
到January
或December
到{{1} }); Jan
:一年的两位数表示(假设在Dec
范围内,包括在内);示例:y
或1970-2069
(分别将解释为99
和03
。)答案 2 :(得分:1)
DD M yy
实际上不是正确的格式。取自DateTime::createFromFormat文档:
D和l - 一天的文字表示 - 周一至周日或周日 到星期六
在致电var_dump
之前尝试$start_date
getTimestamp
,我打赌其实是false
:
返回新的DateTime实例,或者失败时返回FALSE。
您需要使用的格式为d M y
。
答案 3 :(得分:0)
为什么不使用timestamps
strtotime
格式
$string="Closing date: 02 Apr 15";
$start_date = explode("Closing date: ", $string);
print strtotime($start_date[1]);