โค๊ตเกี่ยวกับเวลามีปัญหา ช่วยเแก้ไขให้ทีครับทำมาสัปดาห์แล้วไม่ได้ซักที
คือว่าผมสร้าง field ใน MySQL สำหรับรับวันที่กำหนด เป็น date ทีนี้ปัญหาคือ บันทึกวันที่ก่อนปี 1970-01-01 และเกิน 2037-01-01 ได้ แต่พอนำมาแสดงเป็นวันที่ไทย ดันขึ้น error แบบนี้ครับ Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in C:\AppServ\www\... มันบอกว่า Windows ไม่ซับพอร์ตวันเวลาก่อนวันที่ 1 มกราคม 2513 ช่วยแก้ไขให้ทีครับ
Code (PHP)
<?
function DateThai($strDate)
{
$strYear = date("Y",strtotime($strDate))+543;
$strMonth= date("n",strtotime($strDate));
$strDay= date("j",strtotime($strDate));
//$strHour= date("H",strtotime($strDate));
//$strMinute= date("i",strtotime($strDate));
//$strSeconds= date("s",strtotime($strDate));
$strMonthCut = Array("","มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม");
$strMonthThai=$strMonthCut[$strMonth];
//return "$strDay $strMonthThai $strYear, $strHour:$strMinute";
return "$strDay $strMonthThai $strYear";
}
$strDate1 = "$psdatatb[CmDate]";
$strDateStart = "$psdatatb[CmStDt]";
$strDateEnd = "$psdatatb[CmFnDt]";
$strDate4 = "$psdatatb[PsBirthday]"; //ถ้าวันที่ก่อน 1970-01-01 จะ Error
$strDateedSt = "$eddatatb[EdDtSt]";
$strDateedFn = "$eddatatb[EdDtFn]"; //ถ้าวันที่หลัง 2037-12-31 จะ Error
//echo "เวลาไทย : ".DateThai($strDate1);
?>
<?echo DateThai($strDateedFn);?>
วอนผู้รู้ช่วยทีครับTag : - - - -
Date :
2013-01-20 23:01:06
By :
Mojizaa
View :
2156
Reply :
7
ลอง echo ค่าก่อนที่จะเข้า function มาดูก่อนครับ ค่ามันคืออเท่าไหร่ เชข้าใจว่าส่งค่าไปน่าจะผิดครับ
Date :
2013-01-21 06:30:07
By :
mr.win
echo ออกมาเป็นอย่างนี้ครับ ถ้าข้อมูลที่เก็บอยู่ก่อนวันที่ 1 มกราคม 2513 และหลังวันที่ 31 ธันวาคม 2580 จะ ขึ้น Error เช่น 1969-12-16 หรือ 2038-01-16 จะแสดง Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in C:\AppServ\www\... ออกมา
แต่ถ้าข้อมูลที่เก็บอยู่ในระหว่างวันที่ 1 มกราคม 2513 และหลังวันที่ 31 ธันวาคม 2580 จะแสดงได้เป็นปกติ เช่น 2013-01-21 จะแสดงออกมาเป็น 21 มกราคม 2556 ปกติ ช่วยทีครับพี่วิน T_T
Date :
2013-01-21 07:03:08
By :
MoJiZabb
ได้ปกติน่ะครับ
Code (PHP)
<?
function DateThai($strDate)
{
$strYear = date("Y",strtotime($strDate))+543;
$strMonth= date("n",strtotime($strDate));
$strDay= date("j",strtotime($strDate));
//$strHour= date("H",strtotime($strDate));
//$strMinute= date("i",strtotime($strDate));
//$strSeconds= date("s",strtotime($strDate));
$strMonthCut = Array("","มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม");
$strMonthThai=$strMonthCut[$strMonth];
//return "$strDay $strMonthThai $strYear, $strHour:$strMinute";
return "$strDay $strMonthThai $strYear";
}
?>
<?echo DateThai("2038-01-16");?>
Result
16 มกราคม 2581
Date :
2013-01-21 08:49:55
By :
mr.win
ขอบคุณครับคุณวิน
แต่ผมดึงข้อมูลมาจากฐานข้อมูล echo ออกมาเป็น 2038-02-01 Error อยู่ครับ แต่ใส่เลขตามตัวอย่างคุณวิน 2038-01-16 ออกครับ เกี่ยวไม๊ครับที่ว่าเป็น PHP4 หรือ PHP5 เลยแสดงค่าเพี้ยน คือถ้าแก้ไม่ได้ขอโค๊ตที่แสดงเป็น 01-10-2039 ทีครับ เพราะเป็นงานแฟ้มทะเบียนประวัติต้อง Print ออกมาเก็บครับ
Date :
2013-01-21 12:02:40
By :
MoJiZabb
ตอบความคิดเห็นที่ : 3 เขียนโดย : mr.win เมื่อวันที่ 2013-01-21 08:49:55
[quote-no
ขออนุญาติดันทู้นี้ พอดีกะลังเจอปัญหาคล้ายๆกัน เลยอยากถามว่าสืบเนื่องจากโค๊ดตัวนี้ที่พี่วินเขียนให้ มันก็ยังมีปัญหาคือ ถ้าวันที่ที่ป้อนเข้าไปตั้งแต่ 2038-10-01 ผลลัพธ์จะออกมาเป็น 1 มกราคม 2513 เสมอ แทนที่จะเป็น 1 ตุลาคม 2581 เป็นเพราะอะไร
Date :
2015-06-04 11:55:30
By :
rachashop
Code (PHP)
function DateThai($strDate){
$dt = new DateTime( $strDate );
$strYear = $dt->format('Y')+543;
$strMonth= $dt->format("n");
$strDay= $dt->format("j");
$strMonthCut = Array("","มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม");
$strMonthThai=$strMonthCut[$strMonth];
return "$strDay $strMonthThai $strYear";
}
echo DateThai('2054-06-15'), "<br>", DateThai('1900-11-01');
Date :
2015-06-04 12:48:24
By :
Chaidhanan
wowww ขอบคุณคุณ Chaidhanan มากตอนนี้ใช้ได้แล้ว
Date :
2015-06-05 08:30:53
By :
rachashop
Load balance : Server 05