ถ้าทำระบบที่ออกแบบให้ลูกค้าจากต่างประเทศมาใช้งานได้อย่างสะดวก อาจจะต้องเปลี่ยนการแสดงผลให้ตามความเคยชินของลูกค้า อย่าง เช่น วันที่ คนไทยจะใช้ 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
อ่านเพิ่มเติม