สวัสดีครับท่านผู้อ่านทุกๆท่าน สำหรับบทความนี้ต่อเนื่องมาจากบทความที่แล้วในเรื่อง ความรู้ทั่วไป : เรื่องของระบบวันเวลา นะครับอย่างไรก็ติดตามดูย้อนหลังกันได้นะครับจะได้มีพื้นฐานเรื่องระบบวันเวลามาก่อน สำหรับในภาษา PHP นั้นก็จะมีฟังก์ชั่นเกี่ยวกับวันเวลาตามตารางข้างล่างเลยครับ
ตารางแสดงฟังก์ชั่นเกี่ยวกับวันเวลาใน PHP
| 
 ฟังก์ชั่น | 
 การใช้งาน | 
|---|---|
| 
ตรวจสอบข้อมูลวันที่ | |
| 
ตรวจสอบ default time zone | |
| 
ตั้งค่า default time zone | |
| 
แสดงเวลาพระอาทิตย์ขึ้น | |
| 
แสดงเวลาพระอาทิตย์ตก | |
| 
แสดงค่าวันที่และเวลา | |
| 
แสดงรายละเอียดของวันที่และเวลา | |
| 
แสดงค่าเวลาปัจจุบันเทียบกับวันที่ 1 มกราคม ค.ศ.1970 | |
| 
แสดงวันเวลาตามมาตรฐาน GMT | |
| 
สร้างวันเวลาตามมาตรฐาน GMT | |
| 
แสดงค่าวันเวลาตามมาตรฐาน GMT/UTC  | |
| 
แสดงค่าวันที่และเวลาบนอินเตอร์เน็ต | |
| 
แสดงค่าวันเวลาท้องถิ่น | |
| 
แสดงค่าเวลาปัจจุบันแบบไมโครวินาทีและวินาที | |
| 
แสดงวันเวลาตามค่าที่กำหนด | |
| 
กำหนดรูปแบบการแสดงวันเวลาท้องถิ่น | |
| 
แปลงค่าวันเวลาจากเวลาท้องถิ่น | |
| 
แปลงค่าสตริงเป็นเวลา timestamp | |
| 
แสดงค่าเวลาปัจจุบันเป็นแบบ timestamp | 
รูปแบบการใช้งานฟังก์ชั่นต่างๆ
- checkdate() ตรวจสอบข้อมูลวันที่
มีรูปแบบดังนี้     checkdate(month,day,year) 
ตัวอย่าง
 
ผลลัพธ์คือ
bool(true) //แสดงว่าวันที่มีรูปแบบที่ถูกต้อง
bool(false) //แสดงว่ามีรูปแบบที่ผิดคือเดือน มกราคม มีแค่ 31 วันแต่เราใส่วันที่ 35 จึงผิด
bool(false) //ไม่ถูกต้องเพราะปี ค.ศ. 2009 เดือนกุมภาพันธ์มี 28 วัน
| Parameter | Description | 
|---|---|
| month | ค่าของเดือน มีค่าตั้งแต่ 1 - 12 | 
| day | ค่าของวันที่ มีค่าตั้งแต่ 1 - 31 | 
| year | ค่าของปี ค.ศ. มีค่าตั้งแต่ 0 - 32767 | 
ตัวอย่าง
<?php
var_dump(checkdate(11,26,1988));
echo("<br>");
var_dump(checkdate(1,35,2012));
echo("<br>");
var_dump(checkdate(2,29,2009));
?>
ผลลัพธ์คือ
bool(true) //แสดงว่าวันที่มีรูปแบบที่ถูกต้อง
bool(false) //แสดงว่ามีรูปแบบที่ผิดคือเดือน มกราคม มีแค่ 31 วันแต่เราใส่วันที่ 35 จึงผิด
bool(false) //ไม่ถูกต้องเพราะปี ค.ศ. 2009 เดือนกุมภาพันธ์มี 28 วัน
- date_default_timezone_get() ตรวจสอบ default time zone
มีรูปแบบดังนี้     date_default_timezone_get() 
ตัวอย่าง
<?php echo(date_default_timezone_get()); ?>
ผลลัพธ์
Asia/Bangkok
- date_default_timezone_set() ตั้งค่า default time zone
มีรูปแบบดังนี้     date_default_timezone_set(timezone) 
| Parameter | Description | 
|---|---|
| timezone | เขต Timezone สามารถตรวจสอบได้ที่ : http://www.php.net/manual/en/timezones.php | 
- date_sunrise() แสดงเวลาพระอาทิตย์ขึ้น
มีรูปแบบดังนี้      date_sunrise(timestamp,format,latitude,longitude,zenith,gmt_offset) 
| Parameter | Description | 
|---|---|
| timestamp | ค่า Timestamp | 
| format | มีให้เลือก 3 รูปแบบ คือ 
 | 
| latitude | ตำแหน่งละติจูดที่ต้องการทราบค่า | 
| longitude | ตำแหน่งลองจิจูดที่ต้องการทราบค่า | 
| zenith | ค่า gmt_offset มีหน่วยเป็น ชั่วโมง | 
| gmt_offset | ค่าเวลา GMT ที่ห่างจากเมืองกรีนิช | 
- date_sunset() แสดงเวลาพระอาทิตย์ตก
มีรูปแบบดังนี้     date_sunset(timestamp,format,latitude,longitude,zenith,gmt_offset) 
    
ตัวอย่างจากทั้งฟังก์ชั่น date_sunrise() และ date_sunset()
 
ผลลัพธ์คือ
 
วันที่ 09-08-2012
พระอาทิตย์ขึ้นที่ผาชนะได อ.โขงเจียม จ.อุบลราชธานี เวลา : 05:45
พระอาทิตย์ตกที่แหลมพรหมเทพ อ.เมือง จ.ภูเก็ต เวลา : 18:42
 
 
| Parameter | Description | 
|---|---|
| timestamp | ค่า Timestamp | 
| format | มีให้เลือก 3 รูปแบบ คือ 
 | 
| latitude | ตำแหน่งละติจูดที่ต้องการตั้งค่า | 
| longitude | ตำแหน่งลองจิจูดที่ต้องการตั้งค่า | 
| zenith | ค่า gmt_offset มีหน่วยเป็น ชั่วโมง | 
| gmt_offset | ค่าเวลา GMT ที่ห่างจากเมืองกรีนิช | 
ตัวอย่างจากทั้งฟังก์ชั่น date_sunrise() และ date_sunset()
<?php
echo("วันที่  " . date('d-m-Y') . "<br><br>พระอาทิตย์ขึ้นที่ผาชนะได อ.โขงเจียม จ.อุบลราชธานี เวลา : " .date_sunrise(time(),SUNFUNCS_RET_STRING,15.37,105.37,90,+7-24) . "<br><br>");
echo("พระอาทิตย์ตกที่แหลมพรหมเทพ อ.เมือง จ.ภูเก็ต เวลา : " .date_sunset(time(),SUNFUNCS_RET_STRING,7.46,98.19,90,+7));
?>
ผลลัพธ์คือ
วันที่ 09-08-2012
พระอาทิตย์ขึ้นที่ผาชนะได อ.โขงเจียม จ.อุบลราชธานี เวลา : 05:45
พระอาทิตย์ตกที่แหลมพรหมเทพ อ.เมือง จ.ภูเก็ต เวลา : 18:42
- date() แสดงค่าวันที่และเวลา
มีรูปแบบดังนี้     date(format,timestamp) 
ตัวอย่าง
 
 
ผลลัพธ์ :
Thursday
Thursday 09th of August 2012 05:43:01 PM
Oct 3,1975 was on a Friday
Thu, 09 Aug 12 17:43:01 +0700
1975-10-03T00:00:00+07:00
 
| Parameter | Description | 
|---|---|
| format | รูปแบบการแสดงผลมีตัวเลือกต่อไปนี้ อักขระที่ใช้แทน "วัน" และ "สัปดาห์" 
 
อักขระที่ใช้แทน "เดือน" 
 
อักขระที่ใช้แทน "ปี" 
 
อักขระที่ใช้แทน "เวลา" 
 | 
| timestamp | ค่าของ Timestamp | 
ตัวอย่าง
<?php
echo(date("l") . "<br />");
echo(date("l dS \of F Y h:i:s A") . "<br />");
echo("Oct 3,1975 was on a ".date("l", mktime(0,0,0,10,3,1975))."<br />");
echo(date(DATE_RFC822) . "<br />");
echo(date(DATE_ATOM,mktime(0,0,0,10,3,1975)) . "<br /><br />");
?>
ผลลัพธ์ :
Thursday
Thursday 09th of August 2012 05:43:01 PM
Oct 3,1975 was on a Friday
Thu, 09 Aug 12 17:43:01 +0700
1975-10-03T00:00:00+07:00
- getdate() แสดงรายละเอียดของวันที่และเวลา
มีรูปแบบดังนี้     getdate(timestamp) 
ซึ่งจะแสดงผลออกมาเป็นอาเรย์มี Element ดังนี้
 
[seconds] - วินาที มีค่าตั้งแต่ 0 - 59
[minutes] - นาที มีค่าตั้งแต่ 0 - 59
[hours] - ชั่วโมง มีค่าตั้งแต่ 0 - 23
[mday] - วันที่ในรอบเดือน มีค่าตั้งแต่ 1 - 31
[wday] - วันในรอบสัปดาห์ มีค่าตั้งแต่ 0 - 6
[year] - ปีแบบตัวเลข 4 หลัก
[yday] - วันในรอบปี มีค่าตั้งแต่ 0 - 365
[weekday] - ชื่อเต็มของวันในรอบสัปดาห์
[month] - ชื่อเต็มของเดือน
0 - เวลาของ Timestamp
ซึ่งจะแสดงผลออกมาเป็นอาเรย์มี Element ดังนี้
[seconds] - วินาที มีค่าตั้งแต่ 0 - 59
[minutes] - นาที มีค่าตั้งแต่ 0 - 59
[hours] - ชั่วโมง มีค่าตั้งแต่ 0 - 23
[mday] - วันที่ในรอบเดือน มีค่าตั้งแต่ 1 - 31
[wday] - วันในรอบสัปดาห์ มีค่าตั้งแต่ 0 - 6
[year] - ปีแบบตัวเลข 4 หลัก
[yday] - วันในรอบปี มีค่าตั้งแต่ 0 - 365
[weekday] - ชื่อเต็มของวันในรอบสัปดาห์
[month] - ชื่อเต็มของเดือน
0 - เวลาของ Timestamp
ตัวอย่าง
<?php
$my_t=getdate(date("U"));
print("$my_t[weekday], $my_t[month] $my_t[mday], $my_t[year]");
?>
ผลลัพธ์
Thursday, August 9, 2012
- gettimeofday() แสดงค่าเวลาปัจจุบันเทียบกับวันที่ 1 มกราคม ค.ศ.1970
มีรูปแบบดังนี้      gettimeofday(return_float) 
ซึ่งจะแสดงผลออกมาเป็นอาเรย์มี Element ดังนี้
[sec] - เวลาในหน่วยวินาที
[usec] - เวลาในหน่วยไมโครวินาที
[minuteswest] - เวลาในหน่วยนาที
[dsttime] - เมื่อมีการใช้เวลาระบบ DST จะเป็น 1 และจะเป็น 0 เมื่อไม่ใช้เวลาในระบบ DST
 
  
ซึ่งจะแสดงผลออกมาเป็นอาเรย์มี Element ดังนี้
[sec] - เวลาในหน่วยวินาที
[usec] - เวลาในหน่วยไมโครวินาที
[minuteswest] - เวลาในหน่วยนาที
[dsttime] - เมื่อมีการใช้เวลาระบบ DST จะเป็น 1 และจะเป็น 0 เมื่อไม่ใช้เวลาในระบบ DST
- gmdate() แสดงวันเวลาตามมาตรฐาน GMT
มีรูปแบบดังนี้     gmdate(format,timestamp) 
สำหรับ format นั้นดูได้จากเรื่่องของฟังก์ชั่น date()
 
 
สำหรับ format นั้นดูได้จากเรื่่องของฟังก์ชั่น date()
- gmmktime() สร้างวันเวลาตามมาตรฐาน GMT
มีรูปแบบดังนี้      gmmktime(hour,minute,second,month,day,year,is_dst) 
 
| Parameter | Description | 
|---|---|
| hour | ชั่วโมง | 
| minute | นาที | 
| second | วินาที | 
| month | เดือน | 
| day | วันที่ | 
| year | ปี ค.ศ. | 
| is_dst | ไม่จำเป็นต้องมีก็ได้ : ให้เป็น 1 ถ้าใช้ระบบ daylight savings time (DST) หรือเป็น 0 ถ้าไม่ใช้ระบบ DST หรือ -1 (ค่าเริ่มต้น) ถ้าไม่ทราบว่าใช้ระบบ DST หรือไม่ | 
- gmstrftime() แสดงค่าวันเวลาตามมาตรฐาน GMT/UTC
มีรูปแบบดังนี้      gmstrftime(format,timestamp)  
สำหรับ format นั้นให้ดูได้จากเรื่องฟังก์ชั่น date() เพียงแต่ใส่ % นำหน้าเช่น
สำหรับ format นั้นให้ดูได้จากเรื่องฟังก์ชั่น date() เพียงแต่ใส่ % นำหน้าเช่น
<?php
echo(strftime("%b %d %Y %X", mktime(20,0,0,11,26,88))."<br>");
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,11,26,88))."<br>"); 
echo(gmstrftime("It is %a on %b %d, %Y, %X )); 
?>
จะแสดงผลได้เป็น
Nov 26 1988 20:00:00
Nov 26 1988 19:00:00
It is Thu on Aug 9, 2012, 16:51:10
- idate() แสดงค่าวันที่และเวลาบนอินเตอร์เน็ต
มีรูปแบบดังนี้     idate(format,timestamp) 
สำหรับ format นั้นให้ดูได้จากเรื่องฟังก์ชั่น date()
 
 
ตัวอย่าง
 
จะได้ผลลัพธ์เป็น
2012
 
 
สำหรับ format นั้นให้ดูได้จากเรื่องฟังก์ชั่น date()
ตัวอย่าง
<?php
echo(idate("Y"));
?>
จะได้ผลลัพธ์เป็น
2012
- localtime() แสดงค่าวันเวลาท้องถิ่น
มีรูปแบบดังนี้       localtime(timestamp,is_associative) 
 
ตัวอย่าง
 
ได้ผลลัพธ์ดังนี้
Array (
[tm_sec] => 5
[tm_min] => 8
[tm_hour] => 17
[tm_mday] => 9
[tm_mon] => 7
[tm_year] => 112
[tm_wday] => 4
[tm_yday] => 221
[tm_isdst] => 0
)
 
 
| Parameter | Description | 
|---|---|
| timestamp | เวลา Timestamp | 
| is_associative | [tm_sec] - วินาที มีค่าตั้งแต่ 0 - 59 [tm_min] - นาที มีค่าตั้งแต่ 0 - 59 [tm_hour] - ชั่วโมง มีค่าตั้งแต่ 0 - 23 [tm_mday] - วันที่ในรอบเดือน มีค่าตั้งแต่ 1 - 31 [tm_mon] - ชื่อเต็มของเดือน [tm_year] - ปีแบบตัวเลข 4 หลัก [tm_wday] - วันในรอบสัปดาห์ มีค่าตั้งแต่ 0 - 6 [tm_yday] - วันในรอบปี มีค่าตั้งแต่ 0 - 365 [tm_isdst] - ชื่อเต็มของวันในรอบสัปดาห์ | 
ตัวอย่าง
<?php print_r(localtime(time(),true)); ?>
ได้ผลลัพธ์ดังนี้
Array (
[tm_sec] => 5
[tm_min] => 8
[tm_hour] => 17
[tm_mday] => 9
[tm_mon] => 7
[tm_year] => 112
[tm_wday] => 4
[tm_yday] => 221
[tm_isdst] => 0
)
- microtime() แสดงค่าเวลาปัจจุบันแบบไมโครวินาทีและวินาที
มีรูปแบบดังนี้        microtime() 
ตัวอย่าง
 
ซึ่งจะได้ผลลัพธ์เป็นไมโครไทม์ดังนี้
0.29098200 1344507502
ตัวอย่าง
<?php echo(microtime()); ?>
ซึ่งจะได้ผลลัพธ์เป็นไมโครไทม์ดังนี้
0.29098200 1344507502
- mktime() แสดงวันเวลาตามค่าที่กำหนด
มีรูปแบบดังนี้      mktime(hour,minute,second,month,day,year,is_dst) 
ตัวอย่าง
ผลลัพธ์
Feb-08-1988
Nov-26-1988
Jan-01-2001
Jan-01-1999
 
 
ตัวอย่าง
<?php
echo(date("M-d-Y",mktime(0,0,0,2,8,1988))."<br />");
echo(date("M-d-Y",mktime(0,0,0,11,26,1988))."<br />");
echo(date("M-d-Y",mktime(0,0,0,1,1,2001))."<br />");
echo(date("M-d-Y",mktime(0,0,0,1,1,99))."<br />");
?>
ผลลัพธ์
Feb-08-1988
Nov-26-1988
Jan-01-2001
Jan-01-1999
- strftime() กำหนดรูปแบบการแสดงวันเวลาท้องถิ่น
มีรูปแบบดังนี้      strftime(date,format) 
สำหรับ format ดูได้จากเรื่องของฟังก์ชั่น gmstrftime()
 
 
 
สำหรับ format ดูได้จากเรื่องของฟังก์ชั่น gmstrftime()
- strptime() แปลงค่าวันเวลาจากเวลาท้องถิ่น
มีรูปแบบดังนี้      strptime(date,format) 
สำหรับ format ดูได้จากเรื่องของฟังก์ชั่น gmstrftime()
 
 
สำหรับ format ดูได้จากเรื่องของฟังก์ชั่น gmstrftime()
- strtotime() แปลงค่าสตริงเป็นเวลา timestamp
มีรูปแบบดังนี้     strtotime(time,now) 
ตัวอย่าง
ผลลัพธ์
1344509974
571251600
1344520774
1347533974
1345298378
1344790800
1344099600
 
 
ตัวอย่าง
<?php
echo(strtotime("now") . "<br />");
echo(strtotime("8 February 1988") . "<br />");
echo(strtotime("+3 hours") . "<br />");
echo(strtotime("+5 week") . "<br />");
echo(strtotime("+1 week 2 days 3 hours 4 seconds") . "<br />");
echo(strtotime("next Monday") . "<br />");
echo(strtotime("last Sunday"));
?>
ผลลัพธ์
1344509974
571251600
1344520774
1347533974
1345298378
1344790800
1344099600
- time() แสดงค่าเวลาปัจจุบันเป็นแบบ timestamp
มีรูปแบบดังนี้     time(void) 
ตัวอย่าง
ผลลัพธ์
1344510072
Thu August 09 2012
ตัวอย่าง
<?php
$t=time();
echo($t . "<br />");
echo(date("D F d Y",$t));
?>
ผลลัพธ์
1344510072
Thu August 09 2012
ครับสำหรับบทความนี้กก็จบลงแล้วต่อไปเราจะลองมาใช้ฟังก็ชั่นวันเวลาที่เราเรียนมาวันนี้มาทำปฏิทินกันดูนะครับ โปรดติดตามในบทความต่อไป สวัสดีครับ
หมายเหตุ :
ที่มา : w3schools : php_ref_date.asp
 
time(void) ใช้ผิดนะคับอาจารย์เป้
ReplyDeleteเพราะตอน void ใช้อันติ ต้องครอบด้วย ( ) ทำให้ time ที่อยู่ภายในหยุด
ดังนั้น จึงเท่ากับ void(time) นะคร๊าบ ~
มาแนว DotA กันเลยทีเดียว ไม่ได้เล่นนานละลืม Skill ไปหมดแล้ว
ReplyDelete