PDA

View Full Version : كسر كردن تعداد روز ازيك تاريخ



bps20590
دوشنبه 15 مهر 1387, 05:28 صبح
با سلام
چطور ميتونم تعداد 20 روز را از يك تاريخ كسر كنم با چه دستوري تاريخ رابوسيله تابع date گرفته ام

maysamscript
دوشنبه 15 مهر 1387, 09:36 صبح
echo date("Y / m / d",time()-20*24*3600);

sedamorde
چهارشنبه 01 آبان 1387, 14:57 عصر
سلام
چطوری میشه تعداد روزهای مانده مثلا تا تاریخ 22/9/2009 را نمایش داد؟

maysamscript
چهارشنبه 01 آبان 1387, 16:34 عصر
echo floor( ( mktime(0,0,0,9,22,2009) - time() ) / 24*3600 );

sedamorde
چهارشنبه 01 آبان 1387, 17:19 عصر
شرمنده دوست من ,میشه کمی توضیخ هم دید! من میخوام بگه مثلا 100 روز مونده!
مرسی
--
من این کد را پیدا کردم


<?
function countdown($event,$month,$day,$year) {
// subtract desired date from current date and give an answer in terms of days
$remain = ceil((mktime(0,0,0,$month,$day,$year) - time()) / 86400);
// show the number of days left
if ($remain > 0) {
print "<p><strong>$remain</strong> more sleeps until $event</p>";
}
// if the event has arrived, say so!
else {
print "<p>$event has arrived!</p>";
}
}

// call the function
countdown("Christmas Day", 10, 23, 2009);
?>

maysamscript
پنج شنبه 02 آبان 1387, 08:05 صبح
من میخوام بگه مثلا 100 روز مونده!
کدی هم که من بهتون دادم دقیقاً همین کار رو میکنه یعنی تعداد روزی که به اون تاریخ مونده رو چاپ میکنه

شرمنده دوست من ,میشه کمی توضیخ هم دید!
دشمنت شرمنده، چرا نمیشه!
تو کدی که من دادم از 3 تا تابع استفاده کردم که یکی یکی توضیح میدم
تابع time:
این تابع تاریخ جاری سرور را به ثانیه تبدیل میکنه و خروجی اون یک عدد 10 رقمی هست که به اون اصطلاحاً timestamp میگن. تایم استمپ صفر برابر تاریخ 1 / 1 / 1970 و زمان 00:00:00 می باشد. هر یک ثانیه که از این تاریخ و زمان که بگذرد یک عدد به تایم استمپ اضافه می شود. مثلاً timestamp تاریخ 23 / 7 / 2005 ساعت 14:8:5 برابر عدد 1122127685 می باشد. حالا این عدد چجوری به دست میاد؟
تابع mktime
این تابع دارای 6 پارامتر می باشد که به ترتیب عبارتند از ساعت، دقیقه، ثانیه، ماه، روز و سال. شما می تونید اون تاریخه رو بزارید تو این تابع و اون عدده رو ببینید!


echo mktime(14,8,5,7,23,2005);//return 1122127685

تابع floor
این تابع قسمت صحیح یک عدد رو بر میگردونه
این کد


echo floor( ( mktime(0,0,0,9,22,2009) - time() ) / 24*3600 );

یعنی تاریخ 9 / 22 / 2009 و ساعت 00:00:00 رو از زمان جاری کم کن و نتیجه رو که بر اساس ثانیه هست رو بر عدد 24*3600 که برابر یک روز هست تقسیم کن و سپس قسمت صحیح عدد رو بده و چاپ کن
اگر بازم توضیح بیشتر لازمه بگید تا بگم که میگم یا نمیگم!

sedamorde
پنج شنبه 02 آبان 1387, 09:54 صبح
بی نهایت مرسی :)

حالا اگه بازم بگم توضیح میگید با نمیگید! :D

من یک تاریخ دارم که میخوام در db ذخیره بشه یعنی تاریخ آغاز و پایان از db خونده بشه(تا اینجاش رو با توضیحات شما یاد گرفتم) حالا تاریخ رو به چه صورتی در بانک قرار بدم که در کد شما هم مشکلی پیش نیاد.مثلا: 22102008 یا 22-10-2008...
ممنون

maysamscript
پنج شنبه 02 آبان 1387, 15:45 عصر
بهتره همیشه با timestamp کار کنید. با ذخیره کردن تاریخ به صورت تایم استمپ در دیتابیس مزایای زیر رو داره:
1- مقایسه تاریخ ها بینهایت آسون میشه
2- انتخاب یک تعداد رکورد که تاریخ گذاری شده اند خیلی راحت میشه. مثلاً به راحتی میشه کلیه رکورد های ماه فلان و در ساعت فلان را استخراج کرد. کلاً انتخاب یک بازه از تاریخ راحت میشه
3- عملیاتی از قبیل جمع و تفریق تاریخ ها آسون میشه
4- دیگه چیزی به ذهنم نمیرسه ولی ادامه داره!

حالا تاریخ رو به چه صورتی در بانک قرار بدم که در کد شما هم مشکلی پیش نیاد.مثلا: 22102008 یا 22-10-2008
هیچ کدام!
شما باید تایم استمپ تاریخ 22-10-2008 را در دیتابیس ذخیره کنید . اینجوری


$timestamp=gmmktime(0,0,0,10,22,2008);//return 1224633600

یعنی شما باید عدد 1224633600 را در دیتابیس ذخیره کنید و اینجوری در تابعی که گفتم استفاده کنید


echo floor( ( $db_timestamp - time() ) / 24*3600 );

فرض کنید db_timestamp از دیتابیس خوانده شده
توجه کنید که فرق تابع gmmktime با mktime در این است که اولی زمان را بر حسب GMT میده و دومی زمان محلی را به تایم استمپ اضافه یا کم میکنه

حالا اگه بازم بگم توضیح میگید با نمیگید! :D
میبینید که گفتم!
بازم اگه سوالی بود در خدمتم

sedamorde
جمعه 03 آبان 1387, 10:41 صبح
maysamscript عزیز خیلی ممنون از راهنماییت :)

maysamscript
جمعه 03 آبان 1387, 11:46 صبح
maysamscript عزیز خیلی ممنون از راهنماییت :)
خواهش میکنم. قابلی نداشت
انشاالله مفید بوده باشه
موفق باشید :)

sedamorde
یک شنبه 08 شهریور 1388, 18:24 عصر
سلام
دوستان چطوری مبشه مقدار زمان گذشته از یک ساعت خاص را که به صورت timestamp ذخیره شده به صورت دقیقه و ثانیه حساب کرد؟
خیلی مهم برام که اگر 1 سال هم گذشته دقیقه و ثانیه را درست نشون بده.
مرسی :)

sedamorde
یک شنبه 08 شهریور 1388, 20:07 عصر
من این کد را پیدا کردم, شاید به درد شما هم بخوره ;)



$second = 1;
$minute = $second*60;
$hour = $minute*60;
$day = $hour*24;
$week = $day*7;

$time = '1251590400';
$offset = time();
$difference = $time-$offset;

$wcount = 0;
for($wcount = 0; $difference>$week; $wcount++) {
$difference = $difference - $week;
}
$dcount = 0;
for($dcount = 0; $difference>$day; $dcount++) {
$difference = $difference - $day;
}
$hcount = 0;
for($hcount = 0; $difference>$hour; $hcount++) {
$difference = $difference - $hour;
}
$mcount = 0;
for($mcount = 0; $difference>$minute;
$mcount++) {
$difference = $difference - $minute;
}


echo "Weeks ago: $wcount<br>";
echo "Days ago: $dcount<br>";
echo "Hours ago: $hcount<br>";
echo "Minutes ago: $mcount<br>";
echo "Seconds ago: $difference<br>";