Ответ 1
Не уверен, что это вам поможет, но попробуйте использовать:
// to show both date and time,
$date->get('YYYY-MM-dd HH:mm:ss');
// or, to show date only
$date->get('YYYY-MM-dd')
Я хочу ввести временную метку в нижнем формате в базу данных.
yyyy-mm-dd hh:mm:ss
Как я могу получить в формате выше?
Когда я использую
$date = new Zend_Date();
он возвращает месяц dd, yyyy hh: mm: ss PM
Я также использую календарь JavaScript для вставки выбранной даты и возвращает его в формате dd-mm-yyyy
Теперь я хочу преобразовать эти оба формата в yyyy-mm-dd hh: mm: ss, поэтому их можно вставить в базу данных. Поскольку формат даты не соответствует формату поля базы данных, дата не вставлена и заполняется только * 00-00-00 00:00:00 *
Спасибо за ответ
Не уверен, что это вам поможет, но попробуйте использовать:
// to show both date and time,
$date->get('YYYY-MM-dd HH:mm:ss');
// or, to show date only
$date->get('YYYY-MM-dd')
Технически @stefgosselin дал правильный ответ для Zend_Date
, но Zend_Date
полностью перегружен, просто получая текущее время в общем формате. Zend_Date
невероятно медленный и громоздкий для использования по сравнению с расширениями родной даты PHP. Если вам не нужен перевод или локализация в вашем выводе Zend_Date
(и, по-видимому, нет), держитесь подальше от него.
Используйте PHP native date
function для этого, например.
echo date('Y-m-d H:i:s');
echo date_format(date_create(), 'Y-m-d H:i:s');
$dateTime = new DateTime;
echo $dateTime->format('Y-m-d H:i:s');
Не делайте общей ошибки при использовании каждого компонента Zend Frameworks только потому, что он предлагает его. Это абсолютно не нужно, и на самом деле, если вы можете использовать родное расширение PHP для достижения того же результата с меньшими или сопоставимыми усилиями, вам будет лучше с помощью собственного решения.
Кроме того, если вы собираетесь сохранить дату в своей базе данных, вы использовали какой-либо из связанных с DateTime столбцов в своей базе данных? Предполагая, что вы используете MySql, вы можете использовать столбец Timestamp или столбец Date ISO8601.
простой способ использования Zend Date - сделать определенную функцию в своих бизнес-объектах, что позволяет параметрировать эту функцию в формате даты. Вы можете найти хороший пример для этого адреса http://www.pylejeune.fr/framework/utiliser-les-date-avec-zend_date/
Вот как я это сделал:
abstract class App_Model_ModelAbstract extends Zend_Db_Table_Abstract
{
const DATE_FORMAT = 'yyyy-MM-dd';
public static function formatDate($date, $format = App_Model_ModelAbstract::DATE_FORMAT)
{
if (!$date instanceof Zend_Date && Zend_Date::isDate($date)) {
$date = new Zend_Date($date);
}
if ($date instanceof Zend_Date) {
return $date->get($format);
}
return $date;
}
}
таким образом вам не нужно беспокоиться о том, действительно ли это экземпляр даты zend, вы можете передать строку или что-нибудь еще, что является датой.
это я сделал это: Zend_Date::now->toString('dd-MM-yyyy HH:mm:ss')
вывод из этого формата - "24-03-2012 13:02:01"
и вы можете изменить свой формат даты
Я всегда использовал метод $date->__toString('YYYY-MM-dd HH-mm-ss');
в прошлом, но сегодня не работал. Я получал вывод по умолчанию "1 ноября 2013 г. 12:19:23"
Итак, сегодня я использовал $date->get('YYYY-MM-dd HH-mm-ss');
, как упоминалось выше. Кажется, я решил свою проблему.
Более подробную информацию об этом вы можете найти здесь: http://framework.zend.com/manual/1.12/en/zend.date.constants.html