السلام عليكم ورحمة الله تعالى وبركاته
اليوم بحول الله انتهيت من برمجة كلاس للتحكم في التاريخ و الوقت حسب Offset :app:
وأيضا بعد الدوال الاخرى كالعمليات على التواريخ ...
المبرمج : عبدالله بن رحمون
الكلاس : SimpleTime
الاصدار : 0.1
التوافقية : Php 5 - Php 6
الكلاس :
كود PHP:
<?
/*
* Class : SimpleTime
* Version : 0.1 Beta
* Author : Abdellah BEN RAHMOUN
* Date : 19 October 2010
* Copyright : Abdellah BEN RAHMOUN
* License : GNU LESSER GENERAL PUBLIC LICENSE
* This Class Is Programmed For Configuration Of Time
* PhpVersion > Php 5 (Supported Php6)
*/
Class SimpleTime
{
Public Function Config($Ofsset)
{
date_default_timezone_set($this->ZoneNameByOffset($Ofsset));
}
Function ZoneNameByOffset($Vars)
{
$Vars *= 3600;
IF( timezone_name_from_abbr("", $Vars, 0) == "" )
{
Return $this->LocalTimezone();
}
Else
{
Return timezone_name_from_abbr("", $Vars, 0);
}
}
Public Function LocalTimezone()
{
date_default_timezone_set('UTC');
$iTime = time();
$arr = localtime($iTime);
$arr[5] += 1900;
$arr[4]++;
$iTztime = @gmmktime($arr[2], $arr[1], $arr[0], $arr[4], $arr[3], $arr[5], $arr[8]);
$offset = doubleval(($iTztime-$iTime)/(60*60));
Return timezone_name_from_abbr("", $offset, 0);
}
Public Function DateAdd($Per,$N,$Date,$Type)
{
$Per = Strtolower($Per);
$Date = Strtotime($Date);
Switch ($Per)
{
Case "y" : $N*=12;
Case "m" :
$Date = Mktime(Date("H",$Date),Date("i",$Date)
,Date("s",$Date),Date("n",$Date)+$N
,Date("j",$Date),Date("Y",$Date));
$N = 0;
Break;
Case "w" : $N*=7;
Case "d" : $N*=24;
Case "h" : $N*=60;
Case "n" : $N*=60;
}
Return Date($Type , $Date + $N);
}
Public Function DateDiff($Date1,$Date2)
{
$Date = Strtotime($Date1) - Strtotime($Date2);
Return Floor($Date/(60*60*24));
}
}
?>
أمثلة
التحكم بالتاريخ حسب الاوفسيت
كود PHP:
$Myvar = new SimpleTime();
$Myvar -> Config(4);
قم بتغيير رقم 4 بما يناسبك ك -3 او +12 او -7 والقيمة 0 تعني توقيت غرنويتش GMT
او ضع قيمة Local وسيطبع لك الوقت المحلي لدى كل زائر
وبهدا سيتغير كل توقيت السيرفر
وطريقة طباعة التاريخ كالعادة لم يتغير شيء
كود PHP:
Echo Date("d - h");
طريقة اظهار اسم المنطقة التي لها توقيت محدد
كود PHP:
Echo $Myvar -> ZoneNameByOffset(12); // Pacific/Auckland
طريقة اظهار اسم منظقة توقيت الزائر
كود PHP:
Echo $Myvar -> Localtimezone();
الان نمر للدالة الاكتر روعة والتي تفتقرها Php والموجودة في Asp وهي DateAdd()
وتقوم باضافة عدد معين من الايام او الشهور او الساعات او التواني او السنوات ... الى تاريخ محدد مثال
كود PHP:
Echo $Myvar -> DateAdd("d",23,"15-Jun-2010","d:m:y"); // 08:07:10
البرامتر الاول نضع القيمة التي نريد اضافة
d : الايام
m : الشهور
y : السنوات
h : الساعات
... الخ
البرامتر التاني عدد x الدي نريد اضافة
البرامتر التالت التاريخ المراد تعديله
البرامتر الرابع صيغة المخرج
والان دالة DateDiff() والتي تقوم بطرح تاريخ من اخر ويعكينا فارق الايام مع احتساب السنوات الكبيسة ...
كود PHP:
Echo $Myvar -> DateDiff("09-Jan-2011","03-Jan-2009")." Days"; // 736 Days
سيكون الناتج 736 يوما
هذا كل شيء والحمدلله
اتمنى ان اكون قد وفقت في شرحي
رابط الكلاس على موقع PhpClasses
http://www.phpclasses.org/package/6561-PHP-Class-For-Full-Control-Of-The-Time-And-Date.html
:1power: