ถ้าทำระบบที่ออกแบบให้ลูกค้าจากต่างประเทศมาใช้งานได้อย่างสะดวก อาจจะต้องเปลี่ยนการแสดงผลให้ตามความเคยชินของลูกค้า อย่าง เช่น วันที่ คนไทยจะใช้ d/M/Y คือ วันที่/เดือน/ปี แต่คนอเมริกันจะใช้ M/d/Y คือ เดือนมาก่อน/วันที่/ปี แต่อัฟริการใต้และฐานข้อมูลส่วนใหญจะเก็บแบบ Y-M-d คือ ปี-เดือน-วัน จะสามารเรียงข้อมูลตามวันเวลา ได้ง่ายที่สุด แต่ไม่นิยมใช้กันในชีวิตประจำวัน ซึ่งถ้าไม่สังเกตดี ๆ อาจจะเข้าใจกันผิดได้
Yii2 ได้อำนวยความสะดวกในส่วนนี้ให้โดยเพียงแค่ไปที่ไฟล์ \common\config\main.php เพิ่ม
main.php
'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',
],
...
ก็จะสามารถใช้ความสามารถนี้ได้
เริ่มจากวันและเวลากันก่อน
$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
เงินก็สามารถเปลี่ยนการแสดงผลได้เหมือนกัน
สกุลเงิน
$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
ขนาดไฟล์ก็สามารถแปลงได้เหมือนกัน
ขนาดไฟล์
$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
อ่านเพิ่มเติม