PHP වල TimeZone එක වෙනස් කිරීම

පරිගණක ක්‍රමලේඛනයේදි අපිට වෙලාව වැදගත් වන අවස්ථා වලට මුහුන පාන්න නිතරම සිදුවෙනවා. එවිට කරන්නේ පරිගණකයේ පද්ධති වෙලාව(System Time) ලබා ගැනීමයි. නොයෙකුත් භාෂා වලදී මෙම ක්‍රියාවලිය නොයෙකුත් විධාන හරහා කරගන්න පුලුවන්. PHP වලදී මේ සඳහා time() යනුවෙන් විධානය ලබා දිය හැකියි.


echo time();

මෙයින් අපට ලැබෙන output එක වන්නේ Unix Timestamp එකකි. Unix Timstamp එකක් යනු Unix Epoch(1970 ජනවාරි 1 00:00:00 GMT) එකේ සිට time() function එක ක්‍රියාත්මක කරවන මොහොත දක්වා තිබෙන තත්පර ගනනයි.
උදාහරණයක් ලෙස 02/23/2009 19:03:40 යන වේලාව Unix timstamp එකක් ලෙස express කරන්නේ 1235415820 ලෙසයි. මෙම timstamp එකක් නැවත සාමාන්‍ය ලෙස කියවීමට හරවා ගැනීමට date() විධානය භාවිතා කල හැකිය. දර්ශනය කල යුතු date format එක date() function එකට parameter යැවීමෙන් වෙනස් කරගත හැක. උදාහරණයක් ලෙස ඉහත timstamp එක එම වේලාව ලෙස දර්ශනය කරගැනීමට භාවිතා කලේ පහත දැක්වෙන විධානයයි.


$time_now = 1235415820 ;
echo date("m/d/Y G:i:s", $time_now);


m = මාසයේ අංකය
d = දිනය
Y = අංක හතරකින් යුත් අවුරුද්ද
G = 24 පැය format ආකාරයේ පැය
i = විනාඩි
s = තත්පර

Output :
02/23/2009 19:03:40

මෙහිදී $time_now = time() ලෙස ලබා දීමෙන් දැන් වේලාව මිනිසෙකුට කියවිය හැකි ආකාරයෙන් (Human readable form) දර්ශනය කර ගත හැක.

සාමාන්‍යයෙන් මෙලෙස time() විධානය ලබා දුන් විට පරිගණකයේ පද්ධති වෙලාව ලබා දෙන නමුත් වෙනත් timezone එකක වෙලාව ලෙස පද්ධති වෙලාව ලබා ගැනීමට අවශ්‍ය වෙන අවස්ථා තිබිය හැක. සමහර විට server එක මගින් ලබා දෙන්නේ Greenwich timezone එකේ වෙලාව විය හැක. මෙම ලබා දෙන timezone එක වෙනස් කිරීමට php.ini ගොනුව වෙනස් කිරීම සිදු කල හැක. ඒ සඳහා php.ini ගොනුව විවෘත කොට date.timezone යන string එක search කරන්න. එසේ කර පහත ආකාරයේ පේළියට පැමිනෙන්න.
[Date]
; Defines the default timezone used by the date functions
;date.timezone =

මෙහි date.timezone = යන පේළිය uncomment කර (එහි මුලින් ඇති ; අයින් කරන්න) = සලකුන ඉදිරියෙන් “Asia/Colombo” ලෙස ලබා දෙන්න. දැන් server එක restart කරන්න.
නමුත් අපට මෙම server wide timezone එක යොදා නොගෙන වෙනත් timezone එකක් අපගේ එක් php script එකක් සඳහා පාවිච්චි කිරීමට අවශ්‍ය නම් කල යුත්තේ කුමක්ද? එවිට භාවිතා කල හැකි විධාන කිහිපයක් තිබේ. මෙම විධාන බොහොවිට මුලින්ම call වන පරිදි ඇතුලත් කර තිබීම වැදගත් වේ. අප බොහෝ මහන්සි වී site එකක් සෑදු පසු එයින් වෙලාව වැරදි ලෙස දර්ශනය කලොත් හෝ එයිටත් වඩා එම වැරැද්ද මතුවෙන තැන හොයාගැනීමට අමාරු වුනොත් එය හිසරදයක වෙන්න පුලුවන්. එම නිසා කෝකටත් කියා timezone එක අපට අවශ්‍ය පරිදි වෙනස් කරගෙන තිබුනොත් එය පසුවට ඇතිවෙන්නට යන ප්‍රශ්න ගොඩක් මඟ හැර ගන්න උපකාරී වෙයි. විශෙෂයෙන්ම වෙලාව අත්‍යවශ්‍යම පද්ධති වලදී මෙය ඉතාමත් වැදගත් වෙන්න පුලුවන්. මම එක පාරක් මුහුණ දීපු online bidding system එක උදාහරණයක් ලෙස ගන්න පුලුවන්.
Timezone එක වෙනස් කර ගැනීමට පහත ස‍ඳහන් PHP කේත පාවිච්චි කරන්න පුලුවන්


$timezone = "Asia/Colombo";
date_default_timezone_set($timezone);

මෙහි Asia/Colombo යනු ශ්‍රී ජයවර්ධනපුර timezone එකයි. date_default_timezone_set() යන විධානය PHP 5වන නිකුතුවේ සිට පාවිච්චි කල හැකි එකක්. PHP 4වන නිකුතුව සඳහා මේ වෙනුවට පහත කේතය භාවිතා කල හැකියි.

putenv("TZ=".$timezone);

මෙම කොටසින් සිදුවන්නේ TZ යනුවෙන් server environmental variable එකක් පිහිටුවීම/වෙනස්කිරීම යි.
PHP5 සඳහා date.timezone() විධානය ද භාවිතා කල හැකිය.

ini_set('date.timezone', $timezone);

මෙම කේත භාවිතා කිරීමේ දී වැදගත් කරුණක් වන්නේ මෙම විධාන අදාල වන්නේ එම script වලට පමණක් වීමයි. එම විධාන නොමැති script වල ක්‍රියාත්මක වන්නේ p
hp.ini ගොනුවේ ඇති timezone එකයි. ඒ වගේම මෙම කේත පේළි මුලින්ම ක්‍රියාත්මක වීමට සලසා තිබීමත් වැදගත්. ඒ සඳහා අනුමත ක්‍රමයක් වන්නේ include() හො include_once() සඳහා යොදාගන්නා script එකක (සාමාන්‍යයෙන් database handlers, function scripts) මුලින්ම මෙම විධාන යෙදීමයි.

PHP සඳහා යොදාගන්නා timzezone strings මෙතනින් ලබා ගත හැක.

Leave a Reply

Your email address will not be published. Required fields are marked *