PHP Date Time Functions

PHP Date Time Functions: Date व Time Related Data किसी भी Software में महत्वपूर्ण Role Play करते हैं और एक Web Application में भी हमें समय-समय पर Date व Time Values को तरह-तरह से Access व Manipulate करने की जरूरत पडती है। PHP हमें Date व Time को Handle करने से संबंधित विभिन्न प्रकार के Functions Provide करता है, जिनके बारे में हम यहां पर  से जानने की कोशिश करेंगे।

Unix TimeStamp

Date व Time को Manage करने के लिए PHP Unix TimeStamp System को Use करता है, जिसमें विभिन्न Format Specifiers का प्रयोग करके हम अपनी सुविधानुसार विभिन्न Formtates को Use कर सकते हैं क्योंकि विभिन्न देशों में Date व Time को अलग-अलग तरीकों से Represent किया जाता है।

उदाहरण के लिए पश्चिमी देशों में Date को Month Date, Year Format में Represent करते हैं जबकि पूर्वी देशों में Date Monty Year Format Use किया जाता है। इसलिए PHP विभिन्न प्रकार से Date को Handle करने के लिए विभिन्न प्रकार की Functionalities Provide करता है।

UNIX Timestamp में किसी भी Date व Time को एक Numerical String के रूप में Represent किया जाता है। जैसेः 20000707101010 Numerical मान वास्तव में 2000-07-07 10:10:10 को Represent कर रहा है। Programming World में Date व Time को जिस तरीके से Format किया जाता है, उस Format को Timestamp कहा जाता है।

UNIX Time Stamp के अन्तर्गत Date व Time को सही व Standard तरीके से Handle करने के लिए 1 January 1970 की रात 12 बजे के समय को Standard आधार के रूप में Use किया जाता है और इसी आधार के अनुसार विभिन्न Date व Time को Calculate किया जाता है।

यानी इस आधार समय से UNIX Time Stamp की शुरूआत माना जाता है और किसी भी समय को एक Numerical Number के रूप में Represent किया जाता है जो कि वास्तव में 1 January 1970 की रात 12 बजे के बाद से बीते हुए कुल Seconds की संख्‍या को Represent करता है।

PHP Date Time Functions Library

PHP हमें Date व Time Manipulation के लिए विभिन्न प्रकार के Functions Provide करता है। इस Section में हम उन्हीं Functions के बारे में थोडा विस्तार से जानने की कोशिश करेंगे।

checkdate() Function – Date Validation

इस Function का प्रयोग करके हम किसी भी Date Value को Validity के लिए Check कर सकते हैं। उदाहरण के लिए यदि हम 30-02-2000 Value को Date के रूप में Use करना चाहते हैं, तो ये Function इस Value को Date के रूप में Use करने से रोक देता है, क्योंकि कभी भी फरवरी में 30 तारीख नहीं हो सकती। इस Function का Syntax निम्नानुसार होता हैः

boolean checkdate(int month, int day, int year);

ये Function Integer Value के रूप में Day, MonthYear Value को Accept करता है और Output के रूप में True या False Return करता है। यदि Specify किए गए तीनो Parameters एक Valid Date को Represent करते हैं, तो ये Function True Return करता है, जबकि विपरीत स्थिति में False Return करता है।

date() Function – Formatting Dates and Times

date() Function Current Date व Time अथवा Date Time को एक String के रूप में Return करता है और इस Function के पहले Parameter को Specify करके हम इस String Representation को अपनी जरूरत के अनुसार Modify करते हुए जिस Format की Date Return करना चाहते हैं उस Format की Date Return कर सकते हैं। इस Function का Prototype निम्नानुसार होता हैः

string date(string format, int timestamp)

इस Function के पहले Parameter के रूप में हम निम्न Characters को Use करके Date को अपनी इच्छानुसार Format कर सकते हैं:

a  यदि Time के साथ am या pm को Lowercase में Display करना हो।
A  यदि Time के साथ AM या PM को Uppercase में Display करना हो।
d  यदि Day of Month with Leading Zero को जैसे 01 से 31 के बीच Display करना हो।
D  यदि Day के पहले तीन Characters को जैसे Mon से Sun के बीच Display करना हो।
F  यदि Month के पूरे नाम को जैसे January से December के बीच Display करना हो।

g  यदि Hour को जैसे 1 से 12 के बीच Display करना हो।
G  यदि Hour को जैसे 0 से 23 के बीच Display करना हो।
h  यदि Hour को जैसे 01 से 12 के बीच Display करना हो।
H  यदि Hour को जैसे 00 से 23 के बीच Display करना हो।
i   यदि Minutes को जैसे 01 से 60 के बीच Display करना हो।
I   यदि Daylight Saving Time को Display करना हो, जहां 0 No को तथा 1 Yes को Represent करता है।
j   यदि Day of Month without Zero को जैसे 1 से 31 के बीच Display करना हो।
L  यदि Leap Year को Display करना हो, जहां 0 Not Leap Year को जबकि 1 Leap Year को Represent करता है।

m  यदि Month के Numerical Representation को जैसे 01 से 12 के बीच Display करना हो।
M  यदि Month के 3-Character को जैसे Jan से Dec के बीच Display करना हो।
n  यदि Month के Non-Zero Numerical Representation को जैसे 1 से 12 के बीच Display करना हो।
O  यदि GMT Difference को जैसे -0500 Display करना हो।
r   यदि RFC 2822 Standard के अनुसार जैसे Tue, 12 Jan 2000 22:22:00 -0530 Date को Display करना हो।
s  यदि Seconds के Non-Zero Numerical Representation को जैसे 00 से 59 के बीच Display करना हो।
S  यदि Day के Suffix जैसे st, nd, rd, the को Display करना हो।

t   यदि Month के कुल दिनों की संख्‍या को जैसे 28 से 31 के बीच Display करना हो।
T  यदि Timezone को जैसे PST, MST, CST, EST, etc… Display करना हो।
U  यदि Unix Timestamp से Elapsed Seconds की संख्‍या (Timestamp) को जैसे 12121212 Display करना हो।
w  यदि Weekday के Numerical Representation को जैसे कि Sunday के लिए 0 से लेकर Saturday के लिए 6 तक के बीच की संख्‍या Display करना हो।
W  यदि Year के Week Number को जैसे 1 से 52 या 1 से 53 के बीच की संख्‍या को Display करना हो।
Y  यदि 4-Digit Year Representation को जैसे 1901 से 2038 के बीच (Unix) या 1970 से 2038 के बीच (Windows) के Year को Display करना हो।
z   यदि Day of Year Representation को जैसे 0 से 364 के बीच को Display करना हो।
Z  यदि Timezone Offset को Seconds के रूप में जैसे -43200 से 50400 के बीच की संख्‍या को Display करना हो।

चूंकि ये List काफी लम्बी है, इसलिए याद रखना मुश्किल होता है। परिणामस्वरूप विभिन्न प्रकार की जरूरतों को पूरा करने के लिए इन Format Options को बार-बार देखने की जरूरत पडती रहती है। इन Options को date() Function के साथ हम निम्नानुसार उपयोग में ले सकते हैं:

echo "Today is ".date("F d, Y");
// Today is July 01, 2012

echo "Today is ".date("l");
// Today is Wednesday

$weekday = date("l");
$daynumber = date("dS");
$monthyear = date("F Y");
printf("Today is %s the %s day of %s", $weekday, $daynumber, $monthyear);
// Today is Wednesday the 22nd day of August 2007 

echo date("m-d-Y");
// 04-26-2012

इस प्रकार से हम विभिन्न Format Options को अपनी जरूरत के अनुसार Use करके Date को विभिन्न तरीकों से Return करवा सकते हैं या Format कर सकते हैं। जिस तरह से हम Date को Format करते हैं, उसी तरह से हम निम्नानुसार Time Value को भी date() Function द्वारा ही Format कर सकते हैं:

echo "The time is ".date("h:i:s");
// The time is 07:44:53

echo "The time is ".date("h:i:sa");
// The time is 07:44:53pm

gettimeofday() Function

ये Function Current Time के विभिन्न Elements का एक Associative Array Return करता है। इस Function का Prototype निम्नानुसार होता हैः

mixed gettimeofday(boolean return_float)

यदि हम इस Function में Optional Parameter के रूप में true मान Pass करते हैं, तो ये Function Current Time को एक Floating Point Value के रूप में Return करता है। ये Function मूल रूप से चार Elements Return करता है, जो निम्नानुसार हैं:

dsttime

Daylight Saving Time Algorithm के आधार पर इस Element में 0 से 10 के बीच कोई भी मान हो सकता है और हर मान निम्नानुसार किसी देश के Daylight Saving Time को Represent करता हैः

  • No daylight Saving Time
  • United States
  • Australia
  • Western Europe
  • Middle Europe
  • Eastern Europe
  • Canada
  • Great Britain and Ireland
  • Romania
  • Turkey
  • Australian 1986 Variation

minuteswest

इस Element में GMT के West से कुल Minutes की संख्‍या Store होती है।

sec

इस Element में Unix Timestamp से कुल Seconds की संख्‍या Store होती है।

usec

इस Element में कुल Microseconds की संख्‍या Store होती है।

इस Function को हम निम्नानुसार Use कर सकते हैं:

$time = gettimeofday();
$GMToffset = $time['minuteswest'] / 60;
printf("Server location is %d hours west of GMT.", $GMToffset);

//Output
Server location is 5 hours west of GMT.

Converting Timestamp to User Friendly Values

getdate() Function एक Timestamp Accept करता है और Timestamp के विभिन्न Components का एक Associative Array Return करता है। Return होने वाले Time Elements Present Date व Time पर आधारित होते हैं न कि UNIX Format Timestamp पर। इस Function का Syntax निम्नानुसार होता हैः

array getdate(int timestamp)

ये Array मूल रूप से 11 Elements Return करता है, जिनमें निम्न Values होते हैं:

  • hours: 0 से 23 के बीच Hours का Numeric Representation
  • mday: 1 से 31 के बीच Day or Month का Numeric Representation
  • minutes: 0 से 59 के बीच Minutes का Numeric Representation
  • mon: 1 से 12 के बीच Months का Numeric Representation
  • months: January से December के बीच Months का Text Representation
  • seconds: 0 से 59 के बीच Seconds का Numeric Representation
  • wday: 0 से 6 के बीच Day Number का Numeric Representation
  • weekday: Sunday से Saturday के बीच Days का Text Representation
  • yday: 0 से 364 के बीच Day of year का Numeric Offset
  • year: Year का 4-Digit Numeric Representation
  • 0: Number of seconds from Unix Timestamp

उदाहरण के लिए यदि हम 1172350253 (February 24, 2007 15:50:53 EST) को getdate() Function में Pass करें, तो ये Function निम्नानुसार Array Return करता हैः

Array (
   [seconds] => 53
   [minutes] => 50
   [hours] => 15
   [mday] => 24
   [wday] => 6
   [mon] => 2
   [year] => 2007
   [yday] => 54
   [weekday] => Saturday
   [month] => February
   [0] => 1172350253
)

Working with Timestamps

PHP हमें time()mktime() नाम के दो Functions Provide करता है। time() Function को हम Current Timestamp प्राप्त करने के लिए Use कर सकते हैं जबकि mktime() Function को हम किसी Specific Date व Time से संबंधित Timestamp को प्राप्त करने के लिए Use कर सकते हैं।

time() Function को हम निम्नानुसार Current Timestamp प्राप्त करने के लिए Use कर सकते हैं:

echo time();
//Output: 11341066657 (Jun 30, 2012)

यदि हम date() Function के दूसरे Parameter के रूप में किसी Unix Timestamp मान को Specify करें, तो date() Function हमें User Readable Format में Date Return कर देता है। जैसेः

echo date(“F d, Y h:i:s”, time());
//Output: Jun 30, 2012 (On Unix System)

mktime() Function का प्रयोग करके हम किसी Specific Date व Time का Unix Timestamp Create कर सकते हैं। इस Function का Prototype निम्नानुसार होता हैः

int mktime(int hour, int minute, int second, int month, int day, int year, int is_dst)

इस Function के is_dst Parameter का Default मान -1 होता है। जबकि यदि Specified Date व Time पर Daylight Saving Time Apply होता हो, तो इस Parameter में हमें 1 Specify करना होता है जबकि विपरीत स्थिति में हमें 0 Specify करना होता है।

यदि हम इस Parameter को Specify नहीं करते हैं, तो PHP स्वयं ही हमारे Computer के Date व Timezone की Setting के आधार पर इस बात को तय कर लेता है कि Daylight Saving Effect में है या नहीं। इस Function को हम निम्नानुसार Use कर सकते हैं:

echo mktime(08, 10, 00, 6, 30, 2012);
//Output: 11341015000

ये Function मूल रूप से दो Time के बीच के Difference को Calculate करने के लिए उपयोगी होता है। जैसेः

$now = mktime();
$taxday = mktime(0,0,0,4,15,2008);

// Difference in seconds
$difference = $taxday - $now;

// Calculate total hours
$hours = round($difference / 60 / 60);

echo "Only $hours hours until tax day!";

//Output: 
Only 7568 hours until tax day!

getlastmod() Function – Web Page’s Last Modification Date

getlastmod() Function का प्रयोग करके हम Current Web Page के Last Modification की Date को प्राप्त कर सकते हैं। ये Function Current Web Page की Last Modification Date को Return करता है जबकि Error की स्थिति में False Return करता है। इस Function को date() Function के साथ निम्नानुसार Use किया जा सकता हैः

$lastmod = date("F d, Y h:i:sa", getlastmod());
echo "Page last modified on $lastmod";

Determining Number of Days in Current Month

date() Function का प्रयोग करके हम Current Month के कुल Days की संख्‍या को ज्ञात कर सकते हैं। इस जरूरत को निम्नानुसार पूरा किया जा सकता हैः

printf("There are %d days in %s.", date("t"), date("F"));

//Output:
There are 31 days in July.

Determining Number of Days in any given Month

date() Function का प्रयोग करके हम किसी Specified Month के कुल Days की संख्‍या को ज्ञात कर सकते हैं। इस जरूरत को निम्नानुसार पूरा किया जा सकता हैः

$lastday = mktime(0, 0, 0, 3, 0, 2007);
printf("There are %d days in February 2007.", date("t",$lastday));

//Output:
There are 28 days in February 2007.

Calculating Any Date from Present Date

कई बार हमें ऐसी जरूरत होती है, जहां Current Date से कुछ दिन पहले या बाद की Date को प्राप्त करना होता है। इस जरूरत को पूरा करने के लिए हम strtotime() Function का प्रयोग कर सकते हैं। जैसेः

$futuredate = strtotime("45 days");
echo date("F d, Y", $futuredate);

//Output:
August 15, 2012

इस PHP Code में strtotime() Function में Argument के रूप में 45 Days Specify किए गए हैं। परिणामस्वरूप ये Function Current Date में 45 Days Add करने के बाद प्राप्त होने वाली Date को Return कर रहा है।

यदि हम Futuredate के स्थान पर Past Date प्राप्त करना चाहें, तो हमें strtotime() Function में Negative Value को Specify करना होता है। जैसेः

$pastdate= strtotime("-45 days");
echo date("F d, Y", $pastdate);

//Output:
May 17	, 2012

यदि हमें Current Date से 8 Weeks 10 Days बाद की Date प्राप्त करनी हो, तो हम निम्नानुसार PHP Code लिख सकते हैं:

$futuredate = strtotime("8 weeks 10 days");
echo date("F d, Y", $futuredate);

//Output:
September 05, 2012

PHP in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS