Ответ 1
strtotime("dateString");
получает его в формат даты на родном языке, тогда вы можете работать с функцией date()
, чтобы распечатать его, как вы хотите.
Я использую API twitter для возврата списка обновлений статуса и времени их создания. Он возвращает дату создания в следующем формате:
Пт Апр 09 12:53:54 +0000 2010
Какой самый простой способ (с PHP или Javascript) отформатировать это как 09-04-2010?
strtotime("dateString");
получает его в формат даты на родном языке, тогда вы можете работать с функцией date()
, чтобы распечатать его, как вы хотите.
Перекрестный браузер, разбор по времени с помощью JavaScript:
var s = "Fri Apr 09 12:53:54 +0000 2010";
var date = new Date(
s.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/,
"$1 $2 $4 $3 UTC"));
Протестировано в IE, Firefox, Safari, Chrome и Opera.
JavaScript может проанализировать эту дату, если вы удалите +0000
из строки:
var dStr = "Fri Apr 09 12:53:54 +0000 2010";
dStr = dStr.replace("+0000 ", "") + " UTC";
var d = new Date(dStr);
Chrome - и я подозреваю, что некоторые другие браузеры IE не могут анализировать его с помощью +0000
, присутствующего в строке, но вы также можете удалить его для взаимодействия.
PHP может анализировать дату с помощью strtotime:
strtotime("Fri Apr 09 12:53:54 +0000 2010");
Javascript. Как заметил @Andy, это будет сука, когда дело доходит до IE. Поэтому лучше полагаться на библиотеку, которая делает это последовательно. DateJS кажется хорошей библиотекой.
После добавления библиотеки вы будете анализировать и форматировать ее как:
var date = Date.parse("Fri Apr 09 12:53:54 +0000 2010");
var formatted = date.toString("dd-MM-yyyy");
В PHP вы можете использовать функции даты или класс DateTime для того же (доступного с PHP 5.2.0):
$date = new DateTime("Fri Apr 09 12:53:54 +0000 2010");
echo $date->format("d-m-Y"); // 09-04-2010
Вот формат даты для API Twitter:
Sat Jan 19 20:38:06 +0000 2013
"EEE MMM dd HH:mm:ss Z yyyy"