PHP Zend日期格式

PHP Zend日期格式,php,zend-framework,date,zend-date,formatdatetime,Php,Zend Framework,Date,Zend Date,Formatdatetime,我想在数据库中输入以下格式的时间戳 yyyy-mm-dd hh:mm:ss 如何获得上述格式? 当我使用 $date = new Zend_Date(); 它返回月日、年日hh:mm:ss PM 我还使用JavaScript日历插入所选日期,并以dd-mm-yyyy格式返回 现在,我想将这两种格式转换为yyyy-mm-dd-hh:mm:ss,以便可以插入到数据库中由于日期格式与数据库字段格式不匹配,因此不会插入日期,而只填充*00-00-00 00:00:00* 感谢您的回答不确定这是否对您

我想在数据库中输入以下格式的时间戳

yyyy-mm-dd hh:mm:ss
如何获得上述格式?

当我使用

$date = new Zend_Date();
它返回月日、年日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,但仅仅以一种通用格式获取当前时间,这完全是矫枉过正<与PHP的原生日期相关扩展相比,code>Zend_Date的速度非常慢,使用起来也非常麻烦。如果您的
Zend_Date
输出中不需要翻译或本地化(而且您显然不需要),请远离它

用于那个,例如

echo date('Y-m-d H:i:s');

不要因为Zend框架提供了每个组件而使用它,这是一个常见的错误。完全没有必要这样做,事实上,如果您可以使用本机PHP扩展以较少或类似的努力实现相同的结果,那么使用本机解决方案会更好

另外,如果要在数据库中保存日期,是否使用了以下选项之一?假设您使用的是MySql,您可以使用时间戳列或ISO8601日期列。

我就是这样做的:

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 date的实例,您可以传递一个字符串或任何其他日期

使用Zend Date的一个简单方法是在其业务对象中创建特定函数,该函数允许将此函数参数化为日期格式。你可以找到这个地址的一个很好的例子

这是我做的:
Zend_Date::now->toString('dd-MM-yyyy HH:MM:ss')

此格式的输出为“24-03-2012 13:02:01”

您可以修改日期格式

我一直使用
$date->\uu-toString('YYYY-MM-dd HH-MM ss')方法在过去但今天不起作用。我得到的默认输出是“2013年11月1日下午12:19:23”

所以今天我使用了
$date->get('YYYY-MM-dd HH-MM-ss')如上所述。似乎已经解决了我的问题


您可以在此处的输出格式中找到更多信息:

您是否使用
Zend_Date
来表示其他内容?或者你只是想用它来格式化一个时间戳?在询问之前你是否参考了手册@是的,我参考了手册,但我找到了这个2009-02-13T12:53:27+01:00。我不想让“t”和“+”在两者之间登录。@戈登:我用zend_date()来获取当前日期。谢谢。它可以工作
$date=new Zend_date();$createdDate=$date->get('yyyyy-MM-dd HH:MM:ss');打印($createdDate)
@maniclon如果一个答案解决了你的问题,那么接受给定的答案被认为是礼貌的。我从一个文本框中得到了一个日期数据,格式类似于
$formData['startdate']
,是dd-mm-yy格式。现在,如何使用上述代码或任何其他技术转换为该格式?对于圣诞节之后的日期,您可能会得到奇怪的YYYY结果,最好使用YYYY MM dd…这让我有些为难。使用yyyy,而不是yyyy,除非您明确了解不使用的原因。如果你不这样做的话,你会在一年的最后几天得到任意错误的日期!我赞成!;)戈登总是知道得最好。@Gorden:我知道了。但是我想在
date\u格式(date\u create(),'Y-m-dh:I:s')的第一个参数中使用
$formData['startdate']
的数组值。i、 e.代替日期_create()。@maniclon抱歉,我不会告诉你怎么做。使用日期是PHP开发人员的基本知识。我真的没有冒犯你的意思,但是如果你不知道怎么做,你不应该使用Zend框架,而应该首先掌握PHP的基础知识。请按照文档的链接,尝试了解您自己。这很简单,学习如何操作是绝对必要的。日期操作的最终答案是
date('Y-m-d',strotime($nearlyAnyNormalDateFormat))
@stefgosselin在我看来,当框架不能提供比本机API更大的好处时,应该避免使用框架。好处是可读性、易用性、性能或开发速度等。至于意大利面代码:不。仅仅因为您使用本机API并不意味着它将是意大利面代码。意大利面代码总是由人编写的。使用框架编写意大利面代码也是完全可能的。“允许将此函数参数化为日期格式”是相当不清楚的。你能重新措辞吗?另外,欢迎来到StackOverflow!
$dateTime = new DateTime;
echo $dateTime->format('Y-m-d H:i:s');
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;
    }
}