Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > *** แจกโค้ด php thai culture ใช้สำหรับแสดงผล datetime กับ number และแปลง number เป็นภาษาไทย ***



 

*** แจกโค้ด php thai culture ใช้สำหรับแสดงผล datetime กับ number และแปลง number เป็นภาษาไทย ***

 



Topic : 100228

Guest




classes\thai.php
<?php
namespace classes;

use \DateTime as DateTime;

class thai {

    /*==================Datetime=====================*/
    public static function date_format(DateTime $date, $format) {
        $thaidate = array(
            'Sun' => array('l' => 'อาทิตย์', 'D' => 'อา.'),
            'Mon' => array('l' => 'จันทร์', 'D' => 'จ.'),
            'Tue' => array('l' => 'อังคาร', 'D' => 'อ.'),
            'Wed' => array('l' => 'พุธ', 'D' => 'พ.'),
            'Thu' => array('l' => 'พฤหัสบดี', 'D' => 'พฤ.'),
            'Fri' => array('l' => 'ศุกร์', 'D' => 'ศ.'),
            'Sat' => array('l' => 'เสาร์', 'D' => 'ส.'),
            'Jan' => array('F' => 'มกราคม', 'M' => 'ม.ค.'),
            'Feb' => array('F' => 'กุมภาพันธ์', 'M' => 'ก.พ.'),
            'Mar' => array('F' => 'มีนาคม', 'M' => 'มี.ค.'),
            'Apr' => array('F' => 'เมษายน', 'M' => 'เม.ย.'),
            'May' => array('F' => 'พฤษภาคม', 'M' => 'พ.ค.'),
            'Jun' => array('F' => 'มิถุนายน', 'M' => 'มิ.ย.'),
            'Jul' => array('F' => 'กรกฎาคม', 'M' => 'ก.ค.'),
            'Aug' => array('F' => 'สิงหาคม', 'M' => 'ส.ค.'),
            'Sep' => array('F' => 'กันยายน', 'M' => 'ก.ย.'),
            'Oct' => array('F' => 'ตุลาคม', 'M' => 'ต.ค.'),
            'Nov' => array('F' => 'พฤศจิกายน', 'M' => 'พ.ย.'),
            'Dec' => array('F' => 'ธันวาคม', 'M' => 'ธ.ค.'));

        $chrarray = str_split($format);
        $keys = 'roYyFMlD';
        $previous = '';
        $newformat = array();

        foreach ($chrarray as $chr) {
            $match = strpos($keys, $chr);

            if ($match !== FALSE && $previous !== '\\') {
                $default = $date->format($chr);

                switch ($chr) {
                    case 'r':
                        $year = strval(intval($date->format('Y')) + 543);
                        $thai = "{$thaidate[$date->format('D')]['D']} d {$thaidate[$date->format('M')]['M']} $year H:i:s O";
                        array_push($newformat, $thai);
                        break;
                    case 'o':
                    case 'Y':
                        $thai = strval(intval($default) + 543);
                        array_push($newformat, $thai);
                        break;
                    case 'y':
                        $thai = substr(strval(intval($default) + 543), -2);
                        array_push($newformat, $thai);
                        break;
                    default:
                        $thai = $thaidate[substr($default, 0, 3)][$chr];
                        array_push($newformat, $thai);
                        break;
                }

                $previous = $chr;
            }
            else {
                array_push($newformat, $chr);
                $previous = $chr;
            }
        }

        return self::thainum($date->format(implode($newformat)));
     }

     private static function thainum($string) {
        $chrarray = str_split($string);
        $num = array('๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙');
        $thai = array();

        foreach ($chrarray as $chr) {
            array_push($thai, (is_numeric($chr)) ? $num[intval($chr)] : $chr);
        }

        return implode($thai);
    }

    /*==================Number=====================*/
    public static function number($number) {
        if (!is_numeric($number)) {
            return 'Cann\'t convert.';
        }

        return self::thainum($number);
    }

    public static function number_format($number, $decimals = 0, $dec_point = '.', $thousands_sep = ',') {
        if (!is_numeric($number)) {
            return 'Cann\'t convert.';
        }

        return self::thainum(number_format($number, $decimals, $dec_point, $thousands_sep));
    }

    public static function number_totext($number) {
        if (!is_numeric($number)) {
            return 'Cann\'t convert.';
        }

        $num = explode('.', strval($number));
        $numtext = self::numtotext($num[0]);
        $dectext = (count($num) > 1) ? self::dectotext($num[1]) : '';

        return (count($num) == 1) ? $numtext : "{$numtext}จุด{$dectext}";
    }

    public static function number_tobaht($number) {
        if (!is_numeric($number)) {
            return 'Cann\'t convert.';
        }

        $num = explode('.', strval($number));
        $numtext = self::numtotext($num[0]);
        $dectext = (count($num) > 1) ? (strlen($num[1]) <= 2) ? 'บาท' . self::numtotext((strlen($num[1]) == 1) ? $num[1] . '0' : $num[1]) . 'สตางค์' : 'จุด' . self::dectotext($num[1]) . 'บาท' : '';

        return (count($num) > 1) ? "{$numtext}{$dectext}" : "{$numtext}บาทถ้วน";
    }

    private static function numtotext($string) {
        $num = self::splitstr($string, 6);

        $loop = count($num);
        $thai = array();

        for ($i = 0; $i < $loop; $i++) {
            $numthai = self::numtothai($num[$i]);

            for ($m = 0; $m < $i; $m++) {
                $numthai .= 'ล้าน';
            }

            array_push($thai, $numthai);
        }

        return implode(array_reverse($thai));
    }

    private static function numtothai($string) {
        $len = strlen($string);
        $chrarray = array_reverse(str_split($string));
        $pos = array('', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน');
        $num = array('ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า');
        $thai = array();

        for ($i = 0; $i < $len; $i++) {
            if ($chrarray[$i] != '0') {
                if ($chrarray[$i] == '1' && $i == 0) {
                     array_push($thai, ($len > 1) ? 'เอ็ด' : 'หนึ่ง' . $pos[$i]);
                }
                else if ($chrarray[$i] == '1' && $i == 1) {
                    array_push($thai, $pos[$i]);
                }
                else if ($chrarray[$i] == '2' && $i == 1) {
                    array_push($thai, 'ยี่' . $pos[$i]);
                }
                else {
                    array_push($thai, $num[intval($chrarray[$i])] . $pos[$i]);
                }
            }
        }

        return implode(array_reverse($thai));
    }

    private static function dectotext($string) {
        $chrarray = str_split($string);
        $num = array('ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า');
        $thai = array();

        foreach ($chrarray as $chr) {
            array_push($thai, (is_numeric($chr)) ? $num[intval($chr)] : $chr);
        }

        return implode($thai);
    }

    private static function splitstr($string, $length) {
        $len = strlen($string);
        $floor = floor($len / $length);
        $mod = $len % $length;
        $result = array();

        if ($floor > 0) {
            for($i = 0; $i < $floor; $i++) {
                array_push($result, substr($string, 0 - $length * ($i + 1), $length));
            }
        }

        if ($mod > 0) {
            array_push($result, substr($string, 0, $mod));
        }

        return $result;
    }
}
?>


index.php
<?php
    spl_autoload_extensions('.php');
    spl_autoload_register();

    use classes\thai as thai;
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Test PHP</title>
    </head>
    <body>
<?php
    $mydate = new DateTime();
    echo thai::date_format($mydate, 'r');
    echo '<br />';
    echo thai::date_format($mydate, 'วันlที่ d F พ.ศ. Y H:i:s');
    echo '<br />';
    echo thai::date_format($mydate, 'l j M Y');
    echo '<br />';
    echo thai::date_format($mydate, 'd/m/y');
    echo '<br />';
    echo thai::date_format($mydate, 'D Y-n-j');
    echo '<br />';
    echo thai::date_format($mydate, '\D Y-n-j'); // ใช้งาน escape character
    echo '<br /><br />';

    $number = 909876543121.25;
    echo thai::number($number);
    echo '<br />';
    echo thai::number_format($number, 2);
    echo '<br />';
    echo thai::number_format($number, 4, ',', '.');
    echo '<br />';
    echo thai::number_totext($number);
    echo '<br />';
    echo thai::number_tobaht($number);
    echo '<br />';
    echo thai::number_tobaht('12345678909876543121.3456'); // เกิน float max value ให้ใช้ string
    echo '<br />';
?>
    </body>
</html>


รัน
2



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-09-09 16:08:15 By : ห้ามตอบเกินวันละ 2 กระทู้ View : 11637 Reply : 16
 

 

No. 1

Guest


ตัวอย่าง format ของ datetime ดูที่นี่ http://php.net/manual/en/function.date.php






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-09 16:09:38 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

แจ่มครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-09 16:19:52 By : mr.win
 

 

No. 3



โพสกระทู้ ( 3,844 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Twitter Facebook

เยี่ยมมากๆเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-09 16:26:51 By : mangkunzo
 


 

No. 4



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์


เจ๋งๆ ครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-09 18:56:03 By : littlebeer
 


 

No. 5

Guest


ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-09 19:07:04 By : อิอิ
 


 

No. 6



โพสกระทู้ ( 3 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณคร้าบ เท่มากเลยทีเดียว !!
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-26 15:55:07 By : lampangman
 


 

No. 7



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

สุดยอดครับ


ประวัติการแก้ไข
2013-09-26 17:21:04
2013-09-26 17:21:34
2013-09-26 17:22:18
2013-09-26 17:22:39
2013-09-26 17:23:33
2013-09-26 17:24:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-26 17:20:27 By : verture
 


 

No. 8



โพสกระทู้ ( 4 )
บทความ ( 0 )



สถานะออฟไลน์



มีประโยชน์มากคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-26 17:22:43 By : chamrut
 


 

No. 9

Guest


สวดยอดจ้า ขอบคุณมากก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-26 18:27:02 By : thecob
 


 

No. 10



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ชอบๆๆ จ้า เทคนิคใหม่ๆๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-26 18:28:09 By : yingthecob
 


 

No. 11



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-26 18:50:43 By : vongole
 


 

No. 12



โพสกระทู้ ( 1,095 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ยอดเยี่ยมกระเทียมดอง ว่าแต่คุณพี่ ห้ามตอบเกินวันละ 2 กระทู้

ไม่มีเพจหรอ จะติดตาม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-26 22:30:42 By : compiak
 


 

No. 13



โพสกระทู้ ( 3 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณ สำหรับการแบ่งปันค่ัะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-27 11:03:23 By : nid_248
 


 

No. 14



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากครับ เป็นภาษาไทยแล้วเย้ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-11 10:20:26 By : wyvernorm
 


 

No. 15



โพสกระทู้ ( 1 )
บทความ ( 0 )



สถานะออฟไลน์


แตกแล้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-30 15:26:58 By : ศิษย์วัด
 


 

No. 16



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

สุดยอดครับ ยอมรับนับถือมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-30 15:32:38 By : biggoto
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : *** แจกโค้ด php thai culture ใช้สำหรับแสดงผล datetime กับ number และแปลง number เป็นภาษาไทย ***
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่