|
|
|
php oop สงสัยโค้ด ทำตามตัวอย่างแล้วรันมา มันแสดงผลไม่ตรงกันครับ |
|
|
|
|
|
|
|
ผมลองทำตาม ebook ของที่นี่ดู ตอนรันออกมามันได้ตามนี้ครับ
20 เม.ย. 555
20 ม.ค. 548
Code (PHP)
<?php
error_reporting(E_ALL);
class thai_datetime{
var $datetime;
function thai_datetime($valuedate = NULL) {
$this->set_datetime($valuedate);
}
function set_datetime($valuedate) {
if(empty($valuedate))
$this->datetime = date("Y-m-d H:i:s");
else
$this->datetime = $valuedate;
}
function cast_datetime($value, $type) {
$value = strtotime($value);
switch($type) {
case "d": return date("j", $value);
case "m": return date("m", $value);
case "y": return date("y", $value);
case "H": return date("H", $value);
case "M": return date("M", $value);
case "S": return date("S", $value);
}
}
function short_month($m_val = NULL) {
if(empty($m_val))
$m_val = $this->cast_datetime($this->datetime,"m");
switch($m_val) {
case 1: return "ม.ค."; break;
case 2: return "ก.พ."; break;
case 3: return "มี.ค."; break;
case 4: return "เม.ย."; break;
case 5: return "พ.ค."; break;
case 6: return "มิ.ย."; break;
case 7: return "ก.ค."; break;
case 8: return "ส.ค."; break;
case 9: return "ก.ย."; break;
case 10: return "ต.ค."; break;
case 11: return "พ.ย"; break;
case 12: return "ธ.ค."; break;
default: return "ม.ค."; break;
}
}
function long_month($m_val = NULL) {
if(empty($m_val))
$m_val = $this->cast_datetime($this->datetime,"m");
switch($m_val) {
case 1: return "มกราคม"; break;
case 2: return "กุมภาพันธ์"; break;
case 3: return "มีนาคม"; break;
case 4: return "เมษายน"; break;
case 5: return "พฤษภาคม"; break;
case 6: return "มิถุนายน"; break;
case 7: return "กรกฏาคม"; break;
case 8: return "สิงหาคม"; break;
case 9: return "กันยายน"; break;
case 10: return "ตุลาคม"; break;
case 11: return "พฤศจิกายน"; break;
case 12: return "ธันวาคม"; break;
default: return "มกราคม"; break;
}
}
function year($value = NULL) {
if(empty($value))
return $this->cast_datetime($this->datetime,"y")+543;
else return $value+543;
}
function month() {
return $this->cast_datetime($this->datetime,"m");
}
function day() {
return $this->cast_datetime($this->datetime,"d");
}
function hour() {
return $this->cast_datetime($this->datetime,"H");
}
function minute() {
return $this->cast_datetime($this->datetime,"M");
}
function second() {
return $this->cast_datetime($this->datetime,"S");
}
}
$x = new thai_datetime();
echo $x->day() , " " , $x->short_month(), " " ,$x->year();
echo '<br />';
$y = new thai_datetime("2005-1-20");
echo $y->day() , " " , $y->short_month(), " " ,$y->year();
?>
งงตรงเมทธอด short_month() มันส่งพารามิเตอร์เข้าไปที่เมทธอด cast_datetime() แล้วใช้ฟังก์ชัน strtotime ตรงที่ใช้ switch...case เช็คตัวแปร $type แล้ว return date("m", $value) มานะครับ มันรู้ได้ยังไงว่าค่าในตัวแปร $value ตัวไหนเป็นเดือนนะครับ
แล้วอีกอย่าง ปีมันก็แสดงไม่ถูกครับ ช่วยอธิบายให้เข้าใจทีครับ งงตรงที่มัน return ค่ามาแล้วเช็คเนี่ยแหละครับ มันรู้ได้ไงว่าอันไหนเป็น วัน เดือน ปี ครับ
Tag : PHP
|
ประวัติการแก้ไข 2012-04-20 15:31:17
|
|
|
|
|
Date :
2012-04-20 15:29:59 |
By :
fogza |
View :
1308 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แก้ไขให้แล้วครับ
Code (PHP)
error_reporting(E_ALL);
class thai_datetime{
var $datetime;
function thai_datetime($valuedate = NULL) {
$this->set_datetime($valuedate);
}
function set_datetime($valuedate) {
if(empty($valuedate))
$this->datetime = date("Y-m-d H:i:s");
else
$this->datetime = $valuedate;
}
function cast_datetime($value, $type) {
$value = strtotime($value);
switch($type) {
case "d": return date("j", $value);
case "m": return date("m", $value);
case "y": return date("y", $value);
case "Y": return date("Y", $value);
case "H": return date("H", $value);
case "M": return date("M", $value);
case "S": return date("S", $value);
}
}
function short_month($m_val = NULL) {
if(empty($m_val))
$m_val = $this->cast_datetime($this->datetime,"m");
switch($m_val) {
case 1: return "ม.ค."; break;
case 2: return "ก.พ."; break;
case 3: return "มี.ค."; break;
case 4: return "เม.ย."; break;
case 5: return "พ.ค."; break;
case 6: return "มิ.ย."; break;
case 7: return "ก.ค."; break;
case 8: return "ส.ค."; break;
case 9: return "ก.ย."; break;
case 10: return "ต.ค."; break;
case 11: return "พ.ย"; break;
case 12: return "ธ.ค."; break;
default: return "ม.ค."; break;
}
}
function long_month($m_val = NULL) {
if(empty($m_val))
$m_val = $this->cast_datetime($this->datetime,"m");
switch($m_val) {
case 1: return "มกราคม"; break;
case 2: return "กุมภาพันธ์"; break;
case 3: return "มีนาคม"; break;
case 4: return "เมษายน"; break;
case 5: return "พฤษภาคม"; break;
case 6: return "มิถุนายน"; break;
case 7: return "กรกฏาคม"; break;
case 8: return "สิงหาคม"; break;
case 9: return "กันยายน"; break;
case 10: return "ตุลาคม"; break;
case 11: return "พฤศจิกายน"; break;
case 12: return "ธันวาคม"; break;
default: return "มกราคม"; break;
}
}
function year($value = NULL) {
if(empty($value))
return $this->cast_datetime($this->datetime,"Y")+543;
else return $value+543;
}
function month() {
return $this->cast_datetime($this->datetime,"m");
}
function day() {
return $this->cast_datetime($this->datetime,"d");
}
function hour() {
return $this->cast_datetime($this->datetime,"H");
}
function minute() {
return $this->cast_datetime($this->datetime,"M");
}
function second() {
return $this->cast_datetime($this->datetime,"S");
}
}
$x = new thai_datetime();
echo $x->day() , " " , $x->short_month(), " " ,$x->year();
echo '<br />';
$y = new thai_datetime("2005-1-20");
echo $y->day() , " " , $y->short_month(), " " ,$y->year();
|
|
|
|
|
Date :
2012-04-20 16:06:46 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แก้ตรงไหนไปหรอครับ ผมยังหาไม่เจอเลย พอจะอธิบายเพิ่มเติมได้ไหมครับ
ตรง date("m", $value); นะครับ
ขอบคุ๕มากครับ
|
|
|
|
|
Date :
2012-04-20 16:42:11 |
By :
fogza |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แนะนำของผม เป็นแบบ function ใช้ง่าย เหมือนกับ php date() เป๊ะ แต่เป็นวันเดือนปีภาษาไทย
http://www.okvee.net/articles/%E0%B9%81%E0%B8%AA%E0%B8%94%E0%B8%87%E0%B8%A7%E0%B8%B1%E0%B8%99%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-thaidate
|
ประวัติการแก้ไข 2012-04-20 22:51:53
|
|
|
|
Date :
2012-04-20 17:27:18 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|