Yii2 数据格式化

zebrayoung

yiii18nFormatter格式化小助手

一、常用的属性

(1)$dateFormat
日期格式:yyyy-MM-dd,或者 "short", "medium", "long", or "full"

(2)$datetimeFormat
具体时间格式:yyyy-MM-dd HH:mm:ss

(3)$locale
区域位置,如果没有设置,将使用 yiibaseApplication::$language,按照这一区域的习惯显示格式

(4)$defaultTimeZone
时区,默认UTC

要使用formatter需要在config中的配置

'components' =>[
    'formatter' => [
        'dateFormat' => 'yyyy-MM-dd',
        'datetimeFormat' => 'yyyy-MM-dd HH:mm:ss',
        'decimalSeparator' => ',',
        'thousandSeparator' => ' ',
        'currencyCode' => 'CNY',
    ],
]

二、格式化

echo Yii::$app->formatter->asEmail('cebe@example.com');
// 输出: <a href="mailto:cebe@example.com">cebe@example.com</a>
echo Yii::$app->formatter->asParagraphs('hello');
// 值会转换成HTML编码的文本段落,用<p>标签包裹<p>hello</p>;
echo Yii::$app->formatter->asUrl('www.baidu.com').'<br>';
//值会格式化成url的连接<a href="http://www.baidu.com">www.baidu.com</a>
echo Yii::$app->formatter->asImage('my2.jpeg',['alt'=>'图片无法显示']);
//图片的链接会转化成<img src="my2.jpeg" alt="图片无法显示">
echo Yii::$app->formatter->asBoolean(true);
//根据你使用的语言包,输出yes或者是
echo Yii::$app->formatter->asDate(null).'<br>';
//<span class="not-set">(未设置)</span>
echo Yii::$app->formatter->asPercent(0.125, 2).'<br>';
// 输出: 12.50%
echo Yii::$app->formatter->asTimestamp('now').'<br>';
//输出时间戳int型
echo Yii::$app->formatter->asTime(1412599260).'<br>'; 
// 14:41:00 或者 2:41:00 PM根据你的config中的配置
echo Yii::$app->formatter->asTime('2014-10-06 12:41:00').'<br>'; 
// 14:41:00 或者 2:41:00 PM根据你的config中的配置
echo Yii::$app->formatter->asTime('2014-10-06 14:41:00 CEST').'<br>';
 // 14:41:00 或者 2:41:00 PM根据你的config中的配置
echo Yii::$app->formatter->asRaw(1463606983).'<br>';
//简单输出输入值1463606983
echo Yii::$app->formatter->asText('<h3>hello</h3>').'<br>';
//将字符串中html标签当做字符串输出>&lt;h3&gt;hello&lt;/h3&gt;
echo Yii::$app->formatter->asHtml('<h3>hello</h3>').'<br>';
//作为Html的文档输出<h3>hello</h3>
echo Yii::$app->formatter->asNtext("<h3>hello.\nword</h3>").'<br>';
//在字符串中遇到\n可以将它作为换行符实现&lt;h3&gt;hello.<br />word&lt;/h3&gt;
echo Yii::$app->formatter->asRelativeTime(1463632983).'<br/>'; 
// 3个月前 距离现在是几天前
echo Yii::$app->formatter->asDatetime(1463606983).'<br>';  
// 2015-6-16 11:51:43 或者May 19, 2016 5:29:43 AM
echo Yii::$app->formatter->asDatetime('now').'<br>';
//Aug 20, 2016 6:47:39 PM

三.视图部件中的使用

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'update_time:datetime',
        [
            'attribute' => 'update_time',
            'format' => 'datetime',
            'value'=> $model->update_time,
        ],
    ],
]) ?>
<?= GridView::widget([
   'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
      'update_time:datetime',
      [
            'attribute' => 'update_time',
            'format' => 'datetime',
            'value'=> $model->update_time,
        ],
      ],
]) ?>

在视图部件中,也可以重新定义format,未定义的话,默认是使用component中的

<?= DetailView::widget([
        'model' => $model,
        'formatter' => [
            'class' => '\yii\i18n\Formatter',
            'dateFormat' => 'Y-M-d',
            'datetimeFormat' => 'Y-M-d H:i:s',
            'timeFormat' => 'H:i:s', ],
        'attributes' => [
            'update_time:datetime',
        ],
    ]) ?>
    <?= GridView::widget([
       'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'formatter' => ['class' => 'yii\i18n\Formatter','nullDisplay' => '','datetimeFormat' => 'Y-M-d H:i:s',],
        'columns' => [
          'update_time:datetime',
          ],
    ]) ?>

文章参考:http://blog.csdn.net/u0129790...

阅读 5.6k

232 声望
35 粉丝
0 条评论
232 声望
35 粉丝
文章目录
宣传栏