Thursday, August 9, 2012

PHP : การใช้งานกลุ่มฟังก์ชั่นวัน - เวลา

          วัสดีครับท่านผู้อ่านทุกๆท่าน สำหรับบทความนี้ต่อเนื่องมาจากบทความที่แล้วในเรื่อง ความรู้ทั่วไป : เรื่องของระบบวันเวลา นะครับอย่างไรก็ติดตามดูย้อนหลังกันได้นะครับจะได้มีพื้นฐานเรื่องระบบวันเวลามาก่อน สำหรับในภาษา PHP นั้นก็จะมีฟังก์ชั่นเกี่ยวกับวันเวลาตามตารางข้างล่างเลยครับ


ตารางแสดงฟังก์ชั่นเกี่ยวกับวันเวลาใน PHP

 ฟังก์ชั่น
 การใช้งาน
ตรวจสอบข้อมูลวันที่
ตรวจสอบ default time zone
ตั้งค่า default time zone
แสดงเวลาพระอาทิตย์ขึ้น
แสดงเวลาพระอาทิตย์ตก
แสดงค่าวันที่และเวลา
แสดงรายละเอียดของวันที่และเวลา
แสดงค่าเวลาปัจจุบันเทียบกับวันที่ 1 มกราคม ค.ศ.1970
แสดงวันเวลาตามมาตรฐาน GMT
สร้างวันเวลาตามมาตรฐาน GMT
แสดงค่าวันเวลาตามมาตรฐาน GMT/UTC 
แสดงค่าวันที่และเวลาบนอินเตอร์เน็ต
แสดงค่าวันเวลาท้องถิ่น
แสดงค่าเวลาปัจจุบันแบบไมโครวินาทีและวินาที
แสดงวันเวลาตามค่าที่กำหนด
กำหนดรูปแบบการแสดงวันเวลาท้องถิ่น
แปลงค่าวันเวลาจากเวลาท้องถิ่น
แปลงค่าสตริงเป็นเวลา timestamp
แสดงค่าเวลาปัจจุบันเป็นแบบ timestamp



รูปแบบการใช้งานฟังก์ชั่นต่างๆ



  •  checkdate()      ตรวจสอบข้อมูลวันที่
มีรูปแบบดังนี้     checkdate(month,day,year) 


ParameterDescription
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) 

ParameterDescription
timezoneเขต Timezone สามารถตรวจสอบได้ที่ : http://www.php.net/manual/en/timezones.php


  •  date_sunrise()      แสดงเวลาพระอาทิตย์ขึ้น
มีรูปแบบดังนี้      date_sunrise(timestamp,format,latitude,longitude,zenith,gmt_offset) 


ParameterDescription
timestampค่า Timestamp 
formatมีให้เลือก 3 รูปแบบ คือ
  • SUNFUNCS_RET_STRING (แสดงผลเป็นข้อความ)
  • SUNFUNCS_RET_DOUBLE (แสดงผลเป็นแบบ float)
  • SUNFUNCS_RET_TIMESTAMP (แสดงผลเป็น Timestamp)
latitudeตำแหน่งละติจูดที่ต้องการทราบค่า
longitudeตำแหน่งลองจิจูดที่ต้องการทราบค่า
zenithค่า gmt_offset มีหน่วยเป็น ชั่วโมง
gmt_offsetค่าเวลา GMT ที่ห่างจากเมืองกรีนิช


  •  date_sunset()      แสดงเวลาพระอาทิตย์ตก
มีรูปแบบดังนี้     date_sunset(timestamp,format,latitude,longitude,zenith,gmt_offset) 


ParameterDescription
timestampค่า Timestamp 
formatมีให้เลือก 3 รูปแบบ คือ
  • SUNFUNCS_RET_STRING (แสดงผลเป็นข้อความ)
  • SUNFUNCS_RET_DOUBLE (แสดงผลเป็นแบบ float)
  • SUNFUNCS_RET_TIMESTAMP (แสดงผลเป็น Timestamp)
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) 


ParameterDescription
formatรูปแบบการแสดงผลมีตัวเลือกต่อไปนี้

อักขระที่ใช้แทน "วัน" และ "สัปดาห์"
  • d - ลำดับวันในรอบเดือนแบบมี 0 นำหน้า (มีค่าตั้งแต่ 01 - 31)
  • D - วันในรอบสัปดาห์แบบตัวอักษรย่อ 3 ตัว
  • j - วันที่ของเดือนแบบไม่มี 0 นำหน้า (มีค่าตั้งแต่ 1 - 31)
  • l (ตัว 'L' เล็ก) - ชื่อวันในรอบสัปดาห์แบบเต็ม
  • N - ลำดับวันในสัปดาห์ตามมาตรฐาน ISO-8601 (1 คือ Monday จนถึง 7 คือ Sunday)
  • S - ตัวย่อแสดงลำดับของวันคือวันแรกเป็น st,วันที่ 2 เป็น nd,วันที่ 3 เป็น rd ส่วนวันอื่นๆจะเป็น th.)
  • w - ลำดับวันเป็นตัวเลขในรอบสัปดาห์ (0 คือ Sunday จนถึง 6 คือ Saturday)
  • z - วันที่เท่าใดของปีนับจากต้นปี (จาก 0 ถึง 365)
  • W - แสดงค่านับสัปดาห์ที่ตามมาตรฐาน ISO-8601
อักขระที่ใช้แทน "เดือน"
  • F - แสดงชื่อเดือนแบบเต็ม (มีค่าตั้งแต่ January - December)
  • m - รูปแบบเดือนเป็นตัวเลขมี 0 นำหน้า (มีค่าตั้งแต่  01 - 12)
  • M - แสดงตัวอักษร 3 ตัวแรกของชื่อเดือน
  • n - รูปแบบเดือนเป็นตัวเลขไม่มี 0 นำหน้า (มีค่าตั้งแต่ 1 - 12)
  • t - จำนวนวันในเดือนนี้
อักขระที่ใช้แทน "ปี"
  • L - ตรวจสอบปีอธิกมาส (มีค่าเป็น 1 ปีอธิกมาส หรือ 0 ถ้าไม่ใช่ปีอธิกมาส)
  • o - รูปแบบปีตามมาตรฐาน ISO-8601 
  • Y - ปี ค.ศ. 4 หลัก
  • y - ปี ค.ศ. 2 หลัก
อักขระที่ใช้แทน "เวลา"
  • a - แสดงคำว่า am หรือ pm
  • A - แสดงคำว่า AM หรือ PM
  • B - เวลาในอินเตอร์เน็ตที่สร้างมาเพื่อเลี่ยงเวลาในเขตโซนเวลาที่ต่างกัน โดยแบ่งเวลาแต่ละวันเป็น 1000 ส่วนเรียกแต่ละส่วนว่า Beats ซึ่งแต่ละ Beats มีค่าเท่ากับ 86.4 วินาที (มีค่าตั้งแต่ 000 - 999)
  • g - รูปแบบชั่วโมงไม่มี 0 นำหน้าแบบ 12 ชั่วโมง (มีค่าตั้งแต่ 1 - 12)
  • G - รูปแบบชั่วโมงไม่มี 0 นำหน้าแบบ 12 ชั่วโมง (มีค่าตั้งแต่ 0 - 23)
  • h - รูปแบบชั่วโมง 2 หลักแบบ 12 ชั่วโมง (มีค่าตั้งแต่ 01 - 12)
  • H - รูปแบบชั่วโมง2 หลักแบบ 24 ชั่วโมง (มีค่าตั้งแต่ 00 - 23)
  • i - เวลาในหน่วยนาทีแบบมีเลข 0 นำหน้า (มีค่าตั้งแต่ 00 - 59)
  • s - เวลาหน่วยวินาทีเป็นเลข 2 หลัก (มีค่าตั้งแต่ 00 - 59)
  • e - สัญลักษณ์เขตุ Timezone
  • I (i ตัวใหญ่) - มีค่าเป็น1 ช้าใช้ระบบ Daylight Savings Time : DST หรือ 0 ถ้าไม่ใช้ระบบ DST)
  • O - เวลาที่แตกต่างจากมาตรฐานกรีนิช (GMT) หน่วยเป็นชั่วโมง (ตัวอย่างเช่น: +0100)
  • T - เขตุเวลา
  • Z - เขตุเวลา Timezone ในหน่วยวินาที (มีค่าตั้งแต่ -43200 ถึง 43200)
  • c - เวลาตามมาตรฐาน ISO-8601 (รูปแบบคือ ปี-เดือน-วันTชั่วโมง:นาที:วินาที(+,-)GMT ซึ่งจะใช้ได้กับ PHP เวอร์ชั่น 5 เป็นต้นไป ตัวอย่างเช่น 2004-02-12T15:19:21+00:00)
  • r - วันเวลาตามมาตรฐาน RFC 2822 (ตัวอย่างเช่น Thu, 21 Dec 2000 16:01:07 +0200)
  • U - เวลา Timestamp อาจได้มาจาก time()
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

ตัวอย่าง


<?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





  •  gmdate()      แสดงวันเวลาตามมาตรฐาน GMT
มีรูปแบบดังนี้     gmdate(format,timestamp) 

สำหรับ format นั้นดูได้จากเรื่่องของฟังก์ชั่น date()





  •  gmmktime()      สร้างวันเวลาตามมาตรฐาน GMT
มีรูปแบบดังนี้      gmmktime(hour,minute,second,month,day,year,is_dst) 


ParameterDescription
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() เพียงแต่ใส่ % นำหน้าเช่น 

<?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()


ตัวอย่าง


<?php
echo(idate("Y"));
?>

จะได้ผลลัพธ์เป็น

2012




  •  localtime()      แสดงค่าวันเวลาท้องถิ่น
มีรูปแบบดังนี้       localtime(timestamp,is_associative) 

ParameterDescription
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() 

ตัวอย่าง


<?php
echo(microtime());
?>

ซึ่งจะได้ผลลัพธ์เป็นไมโครไทม์ดังนี้

0.29098200 1344507502




  •  mktime()      แสดงวันเวลาตามค่าที่กำหนด
มีรูปแบบดังนี้      mktime(hour,minute,second,month,day,year,is_dst) 

ตัวอย่าง


<?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()




  •  strptime()      แปลงค่าวันเวลาจากเวลาท้องถิ่น
มีรูปแบบดังนี้      strptime(date,format) 

สำหรับ format ดูได้จากเรื่องของฟังก์ชั่น gmstrftime()





  •  strtotime()      แปลงค่าสตริงเป็นเวลา timestamp
มีรูปแบบดังนี้     strtotime(time,now) 

ตัวอย่าง


<?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) 

ตัวอย่าง


<?php
$t=time();
echo($t . "<br />");
echo(date("D F d Y",$t));
?>


ผลลัพธ์

1344510072
Thu August 09 2012




ครับสำหรับบทความนี้กก็จบลงแล้วต่อไปเราจะลองมาใช้ฟังก็ชั่นวันเวลาที่เราเรียนมาวันนี้มาทำปฏิทินกันดูนะครับ โปรดติดตามในบทความต่อไป สวัสดีครับ


 หมายเหตุ : 

ที่มา : w3schools : php_ref_date.asp

2 comments:

  1. time(void) ใช้ผิดนะคับอาจารย์เป้

    เพราะตอน void ใช้อันติ ต้องครอบด้วย ( ) ทำให้ time ที่อยู่ภายในหยุด

    ดังนั้น จึงเท่ากับ void(time) นะคร๊าบ ~

    ReplyDelete
  2. มาแนว DotA กันเลยทีเดียว ไม่ได้เล่นนานละลืม Skill ไปหมดแล้ว

    ReplyDelete