PHP日期转换为时间戳

时间:2015-02-05 15:20:49

标签: php

我正在尝试将以下字符串(或此时的字符串)转换为时间戳:

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似乎是正确的日期格式。

4 个答案:

答案 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

中提取了字母的重要性
  • dj:每月的某一天,包含或不包含前导零的2位数(01311至{{1} });
  • 31F:一个月的文字表示,例如1月或9月(MJanuaryDecember到{{1} });
  • Jan:一年的两位数表示(假设在Dec范围内,包括在内);示例:y1970-2069(分别将解释为9903。)

答案 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]);