Yii2的Formatter详解

105 阅读1分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

将数值value科学计数法,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)