ถ้าทำระบบที่ออกแบบให้ลูกค้าจากต่างประเทศมาใช้งานได้อย่างสะดวก อาจจะต้องเปลี่ยนการแสดงผลให้ตามความเคยชินของลูกค้า อย่าง เช่น วันที่ คนไทยจะใช้ d/M/Y คือ วันที่/เดือน/ปี แต่คนอเมริกันจะใช้ M/d/Y คือ เดือนมาก่อน/วันที่/ปี แต่อัฟริการใต้และฐานข้อมูลส่วนใหญจะเก็บแบบ Y-M-d คือ ปี-เดือน-วัน จะสามารเรียงข้อมูลตามวันเวลา ได้ง่ายที่สุด แต่ไม่นิยมใช้กันในชีวิตประจำวัน ซึ่งถ้าไม่สังเกตดี ๆ อาจจะเข้าใจกันผิดได้
Yii2 ได้อำนวยความสะดวกในส่วนนี้ให้โดยเพียงแค่ไปที่ไฟล์ \common\config\main.php เพิ่ม
main.php
1 2 3 4 5 6 7 8 9 10 11 12 | 'components' => [ ... 'formatter' => [ 'currencyCode' => 'THB' , 'dateFormat' => 'd/M/Y' , 'datetimeFormat' => 'd/M/Y H:i:s' , 'defaultTimeZone' => 'Asia/Bangkok' , 'locale' => 'th-TH' , 'sizeFormatBase' => 1024, 'timeFormat' => 'H:i:s' , ], ... |
ก็จะสามารถใช้ความสามารถนี้ได้
เริ่มจากวันและเวลากันก่อน
1 2 3 4 5 6 7 8 9 10 | $date = date ( 'c' ); echo '<br>$date = ' . $date , '<br>' , '<br>dateFormat = ' .Yii:: $app ->formatter->dateFormat, '<br>asDate($date) = ' .Yii:: $app ->formatter->asDate( $date ), '<br>asDate($date, \'Y-M-d\') = ' .Yii:: $app ->formatter->asDate( $date , 'Y-M-d' ), '<br>' , '<br>datetimeFormat = ' .Yii:: $app ->formatter->datetimeFormat, '<br>asDatetime($date) = ' .Yii:: $app ->formatter->asDatetime( $date ), '<br>asTimestamp($date) = ' .Yii:: $app ->formatter->asTimestamp( $date ); |
ผลที่ได้คือ
$date = 2016-05-26T19:41:22+02:00
dateFormat = d/M/Y
asDate($date) = 26/5/2016
asDate($date, ‘Y-M-d’) = 2016-5-26
datetimeFormat = d/M/Y H:i:s
asDatetime($date) = 26/5/2016 19:41:22
asTimestamp($date) = 1464284482
เงินก็สามารถเปลี่ยนการแสดงผลได้เหมือนกัน
สกุลเงิน
1 2 3 4 5 6 | $value = 910097693; echo '<br>$value = ' . $value , '<br>' , '<br>currencyCode = ' .Yii:: $app ->formatter->currencyCode, '<br>asCurrency($value) = ' .Yii:: $app ->formatter->asCurrency( $value ), '<br>asCurrency($value, \'USD\') = ' .Yii:: $app ->formatter->asCurrency( $value , 'USD' ); |
ผลที่ได้คือ
$value = 910097693
currencyCode = THB
asCurrency($value) = THB 910,097,693.00
asCurrency($value, ‘USD’) = USD 910,097,693.00
ขนาดไฟล์ก็สามารถแปลงได้เหมือนกัน
ขนาดไฟล์
1 2 3 4 5 6 7 | $value = 910097693; echo '<br>$value = '.$value, '<br>', '<br>sizeFormatBase = '.Yii::$app->formatter->sizeFormatBase, '<br>asSize($value) = '.Yii::$app->formatter->asSize($value), '<br>asShortSize($value) = '.Yii::$app->formatter->asShortSize($value), '<br>asSize($value, 4) = '.Yii::$app->formatter->asSize($value, 4); |
ผลที่ได้คือ
$value = 910097693
sizeFormatBase = 1024
asSize($value) = 867.94 mebibytes
asShortSize($value) = 867.94 MiB
asSize($value, 4) = 867.9368 mebibytes
อ่านเพิ่มเติม