บทความ:
Perl
PHP
HTML
CSS
XML
DTD
XSD
RSS
WSDL
Linux
Site Map
Board
Connect Us: facebooktwitter

การหาวันถัดไปและก่อนหน้าจากวันที่เรากำหนดไว้

นนทชัย ทรัพย์ทวีพงศ์ 2009-08-20 18:05:06  ให้คะแนนบทความนี้(0)  ลดคะแนนบทความ(0)  จำนวน Comment(0)  จำนวนคนอ่าน(153)  

ในบทความที่แล้วผมได้กล่าวถึงการหาวันถัดไปและก่อนหน้าจากวันที่ปัจจุบันไปแล้วนะครับ แต่มันมีกรณีหนึ่งคือว่าถ้าเราต้องการหาวันถัดไปและวันก่อนหน้าของวันที่ที่เรากำหนดเองล่ะ จะทำอย่างไร ในเมื่อฟังก์ชัน localtime() มันต้องการรับค่าพารามิเตอร์เป็น timestamp ดังนั้นเราก็ต้องแปลงค่าวันที่ที่เรากำหนดนั้นให้เป็น timestamp เสียก่อน

ตัวอย่างการแปลงวันที่ที่เรากำหนดให้เป็น timestamp

#!/usr/bin/perl

use POSIX;

$mydate = "2009-08-20";
($year, $mon, $date) = split(/-/, $mydate);

# ก่อนจะเข้าฟังก์ชัน mktime ก็ต้องทำให้อยู่ในรูปแบบที่มันยอมรับ ซึ่งก็คือมันจะมองว่าเดือนมีตั้งแต่ 0-11 (ไม่ใช่ 1-12) และปีที่จะส่งไปนั้นจะต้องนำไปลบกับ 1900 ก่อน 
$mon--;
$year -= 1900;

# รูปแบบของมันคือ mktime(second, minute, hour, date, mon, year, wday, yday, isdst) แต่ที่ส่งไปแค่ 3 ค่าเพราะว่าเราสนใจเฉพาะวันที่เท่านั้น
$ts_mydate = mktime(0, 0, 0, $date, $mon, $year, 0, 0, -1);

# จะได้ค่า timestamp ออกมาแล้วครับ ซึ่งผมจะใช้ค่านี้ในตัวอย่างต่อไป
print $ts_mydate . "\n";

# ผลลัพธ์ที่ได้คือ 1250010000

ตัวอย่างการนำค่า timestamp ที่หาได้ไปเข้าฟังก์ชัน localtime เพื่อหาวันที่ในระยะเวลาที่ต้องการ

#!/usr/bin/perl

# ต่อจากตัวอย่างที่แล้ว แต่ตัด comment ออกนะครับ
use POSIX;

$mydate = "2009-08-12";
($year, $mon, $date) = split(/-/, $mydate);
print "From date: " . sprintf("%02d-%02d-%04d", $date, $mon, $year) . "<br />";
$mon--;
$year -= 1900;

$ts_mydate = mktime(0, 0, 0, $date, $mon, $year, 0, 0, -1);

# ในกรณีนี้ผมต้องการหา 5 วันต่อจากวัน 2009-08-12 นะครับ
$number = 5;

($sec, $min, $hour, $date_next, $mon_next, $year_next, $dayno) = localtime($ts_mydate-(86400*$number));
$mon_next++;
$year_next+=1900;

print "Next 5 date: " . sprintf("%02d-%02d-%04d", $date_next, $mon_next, $year_next) . "<br />";

# ผลลัพธ์ที่ได้คือ
# From date: 12-08-2009
# Next 5 date: 17-08-2009
แหล่งที่มา:

Related Article

Related Download



Login  Login
ค้นหา  Search