2015-05-04 3 views
0

Я пытаюсь проанализировать веб-страницу в структуре данных, поэтому мне нужно преобразовать две строки (одну дату, один раз) в объект datetime.PHP datetime from string с именем дня

звучит просто, но моя проблема - это формат.

пример дата: 'Donnerstag 23.10. 2014 ' примера времени:' 20:30 '

, чтобы соответствовать этому в ONE DateTime мне нужно Concat их так что я в результате

ПРИМЕЧАНИЕ: решение отредактированного инлайн (правильный, против неправильно , что было моим вопросом) dateTimeString is 'Donnerstag 23.10. 2014 20:30 '

$date = "Donnerstag 23.10. 2014"; 
$date = explode(" ", $date); 
$time = "20:30"; 
$datetimeString = $date[1].$date[2]." ".$time; 

// wrong 
$datetime = new DateTime(); 
$dateTime->createFromFormat("d.m.Y H:i"); 

// correct 
DateTime::createFromFormat("d.m.Y H:i"); 
echo $datetime->format("d.m.Y H:i"); 

я ожидал, что выход будет' Donnerstag 23,10. 2014 20:30 -> 23.10.2014 20:30 ' , но итоговый результат - день/время, когда я запускаю скрипт ... поэтому createFromFormat не удалось, без ошибок/предупреждений!

примечание: я также попытался отрезать рабочий день, но все же получил ту же проблему, дата-время не обрабатывается правильно. мне действительно нужно разбить его на каждый бит (день, месяц, год, а затем присвоить его ??)

+2

Ну вы никогда не использовать '$ datetimeString' в процессе впоследствии настолько очевидно, что не может работать ... –

+0

Я думаю, что вам нужно, чтобы избавиться от слова Donnerstag, нет никакой пользы в том, чтобы его, и я безуспешно пытался заставить PHP распознать его. – braks

ответ

1

проверить это

$date = "23.10.2014"; 
$time = "20:30"; 
$datetimeString = $date." ".$time; 
$datetime = DateTime::createFromFormat("d.m.Y H:i", $datetimeString); 
echo $datetime->format("d.m.Y H:i"); 
+0

проблема заключалась в моем вызове createFromFormat, ваш пример показал мне, что я должен называть его static DateTime :: createFromFormat вместо создания экземпляра и вызова метода. благодаря – lumo

0

Проверить ниже -

$date = "Donnerstag 23.10. 2014"; 
$date = explode(" ",$date); 
$time = "20:30"; 

$new_date =date("d.m.Y H:i", strtotime($date[1].$date[2].$time)); 
0

Просто передайте свой $ datetimeString из функции strtotime(). Это создаст длинное число. Попробуй это.

$date = "23.10.2014"; 
$time = "20:30"; 
$datetimeString = $date." ".$time; 
$datetime = DateTime::createFromFormat("d.m.Y H:i",strtotime($datetimeString)); 
echo $datetime->format("d.m.Y H:i");