|
|
|
ถ้าผมต้องการที่จะค้นหาวันที่ 27 เดือนมกราคม ปี2554 |
|
|
|
|
|
|
|
วันที่27 เดือนมกราคม ปี 2554 ข้อมูลมาแบบนี้หรอ
|
|
|
|
|
Date :
2010-05-10 22:43:41 |
By :
plakrim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับใช่เลยครับ
|
|
|
|
|
Date :
2010-05-11 08:13:18 |
By :
SOUL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โอ้ ถ้ามา เป็นข้อความ วันที่27 เดือนมกราคม ปี 2554 แบบนี้ คงต้องวุ่นวายหน่อย
วิธีที่คิดออกตอนนี้ ก็คือ หาทางแปลงให้เป็นวันที่ภาษาอังกฤษก่อน แล้วใช้ function ของ date get day ออกมาอีกทีล่ะมั้ง
ต้องการเป็น PHP ใช่ไหมคะ
|
|
|
|
|
Date :
2010-05-11 08:27:05 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองทำมาให้ดูเป็นตัวอย่าง
โจทย์คือ วันที่27 เดือนมกราคม ปี 2554 ตรงกับวันอะไร
หลักการคือ ทำให้ วันที่27 เดือนมกราคม ปี 2554 อยู่ในรูปของ timestamp แล้วนำไปหาว่าตรงกับวันอะไร
โดนเราจะทำวันที่จากข้อความให้เป็นวันที่แบบตัวเลขก่อน
ในส่วนของแปลงวันที่ภาษาไทยเป็นตัวเลขได้แบ่งไว้เป็น 2 function ค่ะ
function แรก checkTHmonth
function checkTHmonth($thdate){
$longthaimonth = array("0"=>"","1"=>"มกราคม","2"=>"กุมภาพันธ์","3"=>"มีนาคม","4"=>"เมษายน","5"=>"พฤษภาคม","6"=>"มิถุนายน","7"=>"กรกฎาคม","8"=>"สิงหาคม","9"=>"กันยายน","10"=>"ตุลาคม","11"=>"พฤศจิกายน","12"=>"ธันวาคม");
for($imonth=1;$imonth<count($longthaimonth);$imonth++){
$search_month=strpos($thdate,$longthaimonth[$imonth]);
if($search_month!==false){
$thmonth=$longthaimonth[$imonth];
$nummonth=$imonth;
}
}
$numdate=str_replace($thmonth,$nummonth,$thdate);
return $numdate;
}
checkTHmonth คือ การแปลงเดือนภาษาไทยให้เป็นตัวเลข วิธีการก็ง่าย ๆ เลย เก็บเดือนไทยไว้เป็น array จากนั้นนำมาเทียบกับ string วันที่ของเรา ก็จะได้ เดือนที่เป็นตัวเลข แล้วนำมาแทนที่ เดือนไทยในข้อความค่ะ จากตัวอย่าง
ตัวอย่าง
$thaifulldate="วันที่ 27 เดือนมกราคม ปี 2554";
$str=checkTHmonth($thdate);
//ผลลัพธ์ที่ได้คือ วันที่ 27 เดือน1 ปี 2554
หลังจากที่ได้เดือนตัวเลขมาแล้่วต่อไปก็จะเป็นการ ดึงตัวเลขทั้งหมดออกจาก string เพื่อจะได้ วันที่ เดือน ปี เป็นตคัวเลขออกมาค่ะ ด้วย function นี้ค่ะ
function extract_number
function extract_number($string){
preg_match_all('/([\d]+)/',$string,$match);
return $match[0];
}
function นี้จะทำให้ได้ตัวเลขมาเป็น ชุด ๆ อยู่ในรูปแบบ array ค่ะ ตัวอย่างเช่น
Code (PHP)
$str="วันที่ 27 เดือน1 ปี 2554";
$numdate=extract_number($str);
//ผลลัพธ์ที่ได้คือ Array ( [0] => 27 [1] => 1 [2] => 2554 )
ต่อไปมาดู function สำหรับหา วัน ค่ะ
function getTHday
function getTHday($strdate){
$numdate=checkTHmonth($strdate);//หาเดือนที่เป็นตัวเลข
$nummatch=extract_number($numdate);//ดึงตัวเลขทั้งหมดออกจาก string เพื่อจะได้ วันที่ เดือน ปี เป็นตคัวเลข
$day=$nummatch[0];
$month=$nummatch[1];
$year=$nummatch[2]-543;
$endate=$year."-".$month."-".$day;//ทำวันที่ให้เป็น ปี(คศ) เดือน วัน
$time=strtotime($endate);แปลงวันที่ให้อยู่ในรูป timestamp
$thai_day_arr=array("อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์");
$thaiday=$thai_day_arr[date("w",$time)];//หาวัน ภาษาไทยค่ะ
return $thaiday;
}
ตัวอย่างการเรียกใช้
ตัวอย่าง
$thaifulldate="วันที่ 27 เดือนมกราคม ปี 2554";
echo $thaifulldate." ตรงกับวัน ".getTHday($thaifulldate)."<br>";
//ผลลัพธ์ที่ได้คือ วันที่ 27 เดือนมกราคม ปี 2554 ตรงกับวัน พฤหัสบดี
ลองดูเป็นแนวทางนะคะ อาจจะมีวิธีที่ง่ายกว่านี้
|
|
|
|
|
Date :
2010-05-11 10:32:23 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ ค่อยเห็นภาพหน่อย
|
|
|
|
|
Date :
2010-05-11 11:16:48 |
By :
SOUL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|