با سلام به همه ي اساتيد گرامي.
من ميخوام تاريخ ميلادي اولين روز هفته جاري كه منظورم شنبه است رو به دست بيارم.من با توابع تاريخ تو php آشنايي زيادي ندارم.اميدوارم كه دوستان ياري كنند.
با سلام به همه ي اساتيد گرامي.
من ميخوام تاريخ ميلادي اولين روز هفته جاري كه منظورم شنبه است رو به دست بيارم.من با توابع تاريخ تو php آشنايي زيادي ندارم.اميدوارم كه دوستان ياري كنند.
<?php
if( strtotime('today')<strtotime('saturday'))
{
$firstday = strtotime('Last saturday');
}
else
{
$firstday = strtotime('saturday');
}
echo date("d/m/Y",$firstday);
echo '<br \>';
?>
دوست عزيز اگر من به جاي كد و شرطي كه قرار دادي فقط از تك خط$firstday = strtotime('Last saturday');استفاده كنم چه اتفاقي ميفته؟
اگر روز جاری شنبه باشه تاریخ شنبه گذشته را میدهد.
مشكلي كه در كد شما هست اينه كه اگر ما در روز شنبه باشيم تاريخ شنبه هفته قبل رو بر مي گردونه.
خب چطوري چك كنم اگه امروز شنبه بود تاريخ امروز رو پس بده؟
خب حالا برعكس اون ميشه يعني اگر آخرين روز هفته باشه(جمعه) اون وقت يك هفته بعد رو ميده!
<?php
if( date("d/m/Y",strtotime('today')) != date("d/m/Y",strtotime('saturday')))
{
$firstday = strtotime('Last saturday');
}
else
{
$firstday = strtotime('saturday');
}
echo date("d/m/Y",$firstday);
?>
بازم نشد. آقا مگه اولين روز هفته ميلادي شنبه است؟ شايد به خاطر همين كد خوب كار نميكنه!
$ts = date('l')=='Saturday' ? time() : strtotime('previous Saturday');
echo date('l, j F Y', $ts);
ممنون قطعه كد شما عمل كرد. حالا يه سوال كوچيك ديگه با چه تابعي بايد از يك تاريخ عددي رو كم يا زياد كرد مثلا تاريخ 3 روز قبل رو حساب كرد؟
date("d/m/Y", strtotime("-3 day");
کد دوستمون امیر حسین برای من وقتی ساعت 1:00 صبح و روز شنبه باشد درست عمل نمیکند شما هم تست کن
آره من تاريخ رو رو 25 دسامبر گذاشتم ساعت 1:00 بامداد اولش 2010/12/18 رو برگردوند ولي بعدش كه ساعت رو عقب جلو كردم و تاريخ رو هم تغيير دادم بار ديگه اين اتفاق نيفتاد يعني تاريخ 2010/12/25 رو داد !!!
اگر به نتيجه قطعي رسيديد بگيد چون اين تكه كد اگر مشكلي داشته باشه برنامه من باگ خفني پيدا ميكنه .
به نتيجه ي جالبي رسيدم اگه تاريخ شنبه باشه و زمان بين 00:01 دقيقه تا 3:00 بامداد باشه به فرمت 24 ساعت منظورمه،دقيقا كد شنبه هفته قبل رو ميده !!!!!!!
مشكل حل شد و راه حل هم واسه من يكي عجيب بود كه php چقدر تنظيمات داره ! براي اين كه هنگام كار با توابع تاريخ و زمان به مشكل اين چنين برخورد نكينم اول بايستي اختلاف زماني رو كه Time-zone هست رو به زمان منطقه خودمون تغيير بديم مثلا براي ما ميشه asia/teharn كه پيشفرضش گرينويچ بود و به خاطر همين از ساعت 12 شب تا 3:30 بامداد توابع تاريخ با يك روز كاستي كار ميكنند. براي تنظيم ميتونيد از كد زير استفاده كنيد:
date_default_timezone_set("Asia/Tehran");
و يا تنظيمات تاريخ سيستم رو از tehran +3:30 به 00:00 گرينويچ تغيير بديد كه به نظر من راه اول معقولتره.
خوش باشيد
بله من هم داشتم دقیقا دنبال این تابع می گشتم.