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

การหาวันถัดไปและวันก่อนหน้า (จากวันปัจจุบัน)

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

ในบทความนี้ผมจะมาแนะนำการหาวันถัดไปจากวันปัจจุบัน โดยเราสามารถกำหนดได้ว่าเราต้องการหาจำนวนกี่วัน นับจากวันปัจจุบัน ซึ่งผู้อ่านบางคนอาจจะสงสัยว่าทำไมไม่บวกวันที่ไปตรง ๆ เลยล่ะ? นั่นมันไม่ใช่วิธีแก้ปัญหาครับ เพราะในกรณีที่ผ่านเดือนมันจะไม่เปลี่ยนเดือนให้ครับ

ตัวอย่างการหาวันถัดไปจากวันปัจจุบัน 5 วัน

#!/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 เพื่อให้ได้ปีที่จริง


ตัวอย่างการหาวันที่ก่อนวันปัจจุบัน 5 วัน

#!/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

จะเห็นว่าการทำงานเหมือนกัน เพียงแต่เปลี่ยนจากเครื่องหมาย "+" เป็นเครื่องหมาย "-" แทน

แหล่งที่มา:

Related Article

Related Download



Login  Login
ค้นหา  Search