abei1982 2017-01-28 00:49:01 7023次浏览 4条回复 9 2 0

某某某 5秒钟前发布了帖子,诸如此类的功能其实你不用自己写。 Yii2的Formatter就是干这个事情的,它提供了一组格式化输出的方法,都是用asXyz一样的函数。

使用更加方便,直接用Yii::$app->formatter->asXyz(input) 就完事了。

下面把Formatter的用法和主要方法小说一下。

Yii::$app->formatter->asRelativeTime($value, $referenceTime = null)  

该方法可以实现几秒前、几小时前、几天前这样的时间格式。 函数包含两个参数,第一个是要被格式化的时间,第二个是相对时间(默认为now()) $value可以是时间戳或一种时间对象 $referenceTime是时间戳

Yii::$app->formatter->asDuration($value, $implodeString = ', ', $negativeSign = '-')  

这个方法也比较常用,用来将一个数字格式化为年、天、小时、分、秒等。比如一个活动距离今天还有多久开始等等。 倒计时常用

Yii::$app->formatter->asText($value);  

将字符串中html标签当做字符串输出,主要解决的是<>标签在浏览器显示时候会被解析的问题。这个一般在页面需要输出源代码的时候非常有用。

Yii::$app->formatter->asNtext($value) 

在字符串中遇到\n可以将它作为换行符<br/>实现,单它和nl2br还是不同的,除了转化换行符后,还会将<>标签进行解析,即同时执行了asText的功能。

Yii::$app->formatter->asParagraphs($value)  

将转换成HTML编码的文本段落,即用p标签对其进行包裹。

Yii::$app->formatter->asPercent($value, $decimals)

将一个小数$value变成%格式,其中的$decimals代表保留小数点后几位,默认为0位。 要注意的是,当$value 格式化后小数点位数大于$decimals的值时,采取四舍五入法,若$value 格式化后小数点位数小于$decimals的值时,用0补齐。

Yii::$app->formatter->asScientific($value, $decimals = null, $options = [], $textOptions = []) 

将数值$value科学计数法,$decimals代表小数点后几位数字。

Yii::$app->formatter->asShortSize($value, $decimals = null, $options = [], $textOptions = []);  

将byte格式化为xxxkb和xxxmb格式。计算一些文件尺寸的时候用到。

Yii::$app->formatter->asBoolean()  

该函数对参数进行真假格式化,返回Yes或No,如果你的APP设置了语言项,则返回对应语言里标识Yes和No的值,例如中文会返回“是”或“否” 注意:true、不等于0的数字(含负数)、字母都被理解为真,false和0被理解为假,当我们传入NULL时候,函数理解为未设置。

Yii::$app->formatter->asCurrency( $value, $currency = null, $options = [], $textOptions = [] )  

将参数进行货币格式化 ,我们要知道的是前两个参数,第一个参数代表具体金额,第二个代表货币符号,其中第二个参数$currency采用IOS 4217国际标准化标准,用3个字母表示,这里北哥简单列举几个

  • 人民币 China Yuan renminbi (CNY)
  • 港元 hong kong dollar (HKD)
  • 台币 Taiwan dollar (TWD)
  • 欧元 euro (EUR)
  • 美元 US dollar (USD)
  • 英镑 Great British Pound(GBP)
  • 日元 Japanese Yen (JPY)

更多关于IOS 4217 可以看这里 https://zh.wikipedia.org/wiki/ISO_4217

问:如果$currency没有被配置那?

答:程序会搜索 Formatter的locale属性,根据locale值将其本地化,但是你必须安装PHP intl extension才可以,否则无效,如果你很倒霉也没有安装这个扩展,程序会自动查询配置文件中的language属性,根据其将其货币本地化。

引用自 http://www.maomaonv.com/question-view.html?id=3

觉得很赞
您需要登录后才可以回复。登录 | 立即注册