I'm reading lines from a *.txt file and get strings (date formats) in this style:
2017-10-19 20:51:54 GMT+08:00
2020-03-31 13:19:31 GMT-08:00
2018-04-10 14:35:17 GMT
With the function DateTime::createFromFormat, I want to convert such lines into a time string. After that, I would like to get the timestamp with getTimestamp();. So, currently my code looks like this ($date is my read line):
$date = DateTime::createFromFormat("Y-m-d H:i:s", $date);
$timeStamp = $date->getTimestamp();
When I try to do this, I get this error message:
Fatal error: Uncaught Error: Call to a member function getTimestamp() on bool in ...
Does anyone have an idea how to solve this problem?
$date= DateTime::createFromFormat("Y-m-d H:i:s eP", $date);
You are getting this error because the date provided does not match the format specified.
Add the following line after createFromFormat() call -
var_dump(DateTime::getLastErrors());
The above line will return the error. The error message is - "Trailing data". This is because of "GMT+08:00" in the string.
For processing it properly you should provide the optional third parameter to createFormFormat which is timezone and it expects it to be a DateTimeZone object. So update your createFromFormat function as -
$timezone = new DateTimeZone('GMT+08:00');
$date = "2017-10-19 20:51:54";
$date = DateTime::createFromFormat("Y-m-d H:i:s", $date, $timezone);
I hope this helps. You will have to separate the date from the timezone and process it as mentioned above.