如何更改日期格式?(YII)

4
我正在使用YII框架...并使用以下代码显示日期:
<?php echo $classified->created_date ?>

问题是它显示为这样:

2012-11-04 09:34:03

我怎样才能去掉时间,只显示日期?

如果可能的话,可以像这样显示:

20 Jan 2012(月份缩写)

你使用什么来生成日期时间?在你输出它之前。 - Orlymee
你也可以通过设置 SET @@SESSION.DATETIME_FORMAT = '%d %b %Y'; 来设置 MySQL 返回日期格式,参见:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format。 - Sergey
5个回答

6
您可以使用Yii的CFormatter类:
echo Yii::app()->format->date(strtotime($classified->created_date));

您可以将CFormatter扩展成自己的类,然后按您想要的方式格式化日期,您只需要在主配置文件中包含您的新组件类即可。
另一个选择是使用Yii的日期解析器和日期格式化程序:
echo Yii::app()->dateFormatter->formatDateTime(CDateTimeParser::parse($classified->create_date, 'yyyy-MM-dd'),'medium',null);

有很多方法可以实现这个功能...如果您愿意,可以使用标准的PHP。唯一的缺点是,如果您决定更改格式,则可能需要更改许多不同的视图:

echo date("m/d/Y",strtotime($classified->create_date));

1
这是我针对日期问题的解决方案,日期格式化程序对我无效。
<div class="row">
    <?php echo $form->labelEx($model,'fecha_inicio'); ?>
    <?php //echo $form->textField($model,'fecha_inicio'); 
    $this->widget('zii.widgets.jui.CJuiDatePicker',array(
        'name'=>'Eventos[fecha_inicio]',
        // additional javascript options for the date picker plugin
        'options'=>array(
            'showAnim'=>'fold',
            'dateFormat' => 'yy-mm-dd',
            'value' => 'yy-mm-dd',
        ),
        'htmlOptions'=>array(
            'placeholder'=>'Fecha',
        ),
    ));
    ?>
    <?php echo $form->error($model,'fecha_inicio'); ?>
</div>

1

0

当然可以。您应该使用以下代码:

Yii::app()->dateFormatter->format("dd MMM yyyy", $classified->create_data)

改变默认格式设置,从2012年11月4日09:34:03到2012年1月20日。

文档/API链接:

格式


0

嗨,我尝试了:<?php echo $classified->created_date("D,d M Y", $timestamp) ?> 但是那没用……我做错了什么吗? - Debrah
2
PHP的Date函数只接受整数时间戳来进行格式化。 - Paystey
整数时间戳就是自1970年1月1日以来的秒数。 - user1731782

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接