ในบทความนี้ผมจะมาแนะนำการหาวันถัดไปจากวันปัจจุบัน โดยเราสามารถกำหนดได้ว่าเราต้องการหาจำนวนกี่วัน นับจากวันปัจจุบัน ซึ่งผู้อ่านบางคนอาจจะสงสัยว่าทำไมไม่บวกวันที่ไปตรง ๆ เลยล่ะ? นั่นมันไม่ใช่วิธีแก้ปัญหาครับ เพราะในกรณีที่ผ่านเดือนมันจะไม่เปลี่ยนเดือนให้ครับ
#!/usr/bin/perl
# กำหนดจำนวนวันที่เราต้องการหา
$number = 5;
# ทำการหาวันที่ปัจจุบัน
($sec_now, $min_now, $hour_now, $date_now, $mon_now, $year_now, $dayno_now) = localtime();
$mon_now++;
$year_now += 1900;
# ทำการหาวันที่ ที่ถัดจากวันนี้จำนวน 5 วัน
($sec_next, $min_next, $hour_next, $date_next, $mon_next, $year_next, $dayno_next) = localtime(time+(86400*$number));
$mon_next++;
$year_next+= 1900;
print "Now date: " . sprintf("%02d-%02d-%04d", $date_now, $mon_now, $year_now) . "
";
print "Next 5 date: " . sprintf("%02d-%02d-%04d", $date_next, $mon_next, $year_next) . "
";
# ผลลัพธ์ที่ได้คือ (ในกรณีที่วันนี้เป็นวันที่ 20-08-2009)
# Now date: 20-08-2009
# Next 5 date: 25-08-2009
เนื่องจากวันฟังก์ชัน localtime() มันจะทำการคืนค่าเดือนตั้งแต่ 0-11 (0 คือ Jan, 11 คือ Dec) ดังนั้นเราจะต้องทำการบวกค่าเดือนเพิ่ม 1 ค่า และมันจะทำการคืนค่าเป็น ค่าปัจจุบัน - 1900 ดังนั้นเราจะต้องเอาค่าปีที่ได้รับไปบวกกับ 1900 เพื่อให้ได้ปีที่จริง
#!/usr/bin/perl
# กำหนดจำนวนวันที่เราต้องการหา
$number = 5;
# ทำการหาวันที่ปัจจุบัน
($sec_now, $min_now, $hour_now, $date_now, $mon_now, $year_now, $dayno_now) = localtime();
$mon_now++;
$year_now += 1900;
# ทำการหาวันที่ ที่ถัดจากวันนี้จำนวน 5 วัน
($sec_next, $min_next, $hour_next, $date_next, $mon_next, $year_next, $dayno_next) = localtime(time-(86400*$number));
$mon_next++;
$year_next+= 1900;
print "Now date: " . sprintf("%02d-%02d-%04d", $date_now, $mon_now, $year_now) . "
";
print "Previous 5 date: " . sprintf("%02d-%02d-%04d", $date_next, $mon_next, $year_next) . "
";
# ผลลัพธ์ที่ได้คือ (ในกรณีที่วันนี้เป็นวันที่ 20-08-2009)
# Now date: 20-08-2009
# Previous 5 date: 15-08-2009
จะเห็นว่าการทำงานเหมือนกัน เพียงแต่เปลี่ยนจากเครื่องหมาย "+" เป็นเครื่องหมาย "-" แทน
Login
Search| ความเห็นของผู้อ่าน |
| ยังไม่มีความเห็นในบทความนี้ |
| Comment |