PDA

View Full Version : سوال: استفاده از توابع تاريخ براي يافتن تاريخ ميلادي روز شنبه هفته جاري؟



ghasemweb
دوشنبه 06 دی 1389, 19:50 عصر
با سلام به همه ي اساتيد گرامي.
من ميخوام تاريخ ميلادي اولين روز هفته جاري كه منظورم شنبه است رو به دست بيارم.من با توابع تاريخ تو php آشنايي زيادي ندارم.اميدوارم كه دوستان ياري كنند.

hossin.esm
دوشنبه 06 دی 1389, 22:40 عصر
<?php
if( strtotime('today')<strtotime('saturday'))
{
$firstday = strtotime('Last saturday');
}
else
{
$firstday = strtotime('saturday');
}
echo date("d/m/Y",$firstday);
echo '<br \>';
?>

ghasemweb
سه شنبه 07 دی 1389, 00:01 صبح
دوست عزيز اگر من به جاي كد و شرطي كه قرار دادي فقط از تك خط
$firstday = strtotime('Last saturday'); استفاده كنم چه اتفاقي ميفته؟

hossin.esm
سه شنبه 07 دی 1389, 00:21 صبح
اگر روز جاری شنبه باشه تاریخ شنبه گذشته را میدهد.

ghasemweb
سه شنبه 07 دی 1389, 00:24 صبح
مشكلي كه در كد شما هست اينه كه اگر ما در روز شنبه باشيم تاريخ شنبه هفته قبل رو بر مي گردونه.

ghasemweb
سه شنبه 07 دی 1389, 00:27 صبح
خب چطوري چك كنم اگه امروز شنبه بود تاريخ امروز رو پس بده؟

ghasemweb
سه شنبه 07 دی 1389, 00:35 صبح
خب حالا برعكس اون ميشه يعني اگر آخرين روز هفته باشه(جمعه) اون وقت يك هفته بعد رو ميده!

hossin.esm
سه شنبه 07 دی 1389, 00:44 صبح
<?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);
?>

ghasemweb
سه شنبه 07 دی 1389, 00:53 صبح
بازم نشد. آقا مگه اولين روز هفته ميلادي شنبه است؟ شايد به خاطر همين كد خوب كار نميكنه!

hossin.esm
سه شنبه 07 دی 1389, 01:25 صبح
بازم نشد. آقا مگه اولين روز هفته ميلادي شنبه است؟ شايد به خاطر همين كد خوب كار نميكنه!

نه به این خاطر نیست . فکر کنم تاریخ را از ویندوز درست دریافت نمی کند.
و کد
$firstday = strtotime('Last saturday'); درست عمل کند.

امیـرحسین
سه شنبه 07 دی 1389, 01:57 صبح
$ts = date('l')=='Saturday' ? time() : strtotime('previous Saturday');
echo date('l, j F Y', $ts);

ghasemweb
سه شنبه 07 دی 1389, 13:17 عصر
ممنون قطعه كد شما عمل كرد. حالا يه سوال كوچيك ديگه با چه تابعي بايد از يك تاريخ عددي رو كم يا زياد كرد مثلا تاريخ 3 روز قبل رو حساب كرد؟

hossin.esm
سه شنبه 07 دی 1389, 14:12 عصر
date("d/m/Y", strtotime("-3 day");
کد دوستمون امیر حسین برای من وقتی ساعت 1:00 صبح و روز شنبه باشد درست عمل نمیکند شما هم تست کن

ghasemweb
چهارشنبه 08 دی 1389, 00:05 صبح
date("d/m/Y", strtotime("-3 day");
کد دوستمون امیر حسین برای من وقتی ساعت 1:00 صبح و روز شنبه باشد درست عمل نمیکند شما هم تست کن

آره من تاريخ رو رو 25 دسامبر گذاشتم ساعت 1:00 بامداد اولش 2010/12/18 رو برگردوند ولي بعدش كه ساعت رو عقب جلو كردم و تاريخ رو هم تغيير دادم بار ديگه اين اتفاق نيفتاد يعني تاريخ 2010/12/25 رو داد !!!

اگر به نتيجه قطعي رسيديد بگيد چون اين تكه كد اگر مشكلي داشته باشه برنامه من باگ خفني پيدا ميكنه .

ghasemweb
چهارشنبه 08 دی 1389, 00:48 صبح
به نتيجه ي جالبي رسيدم اگه تاريخ شنبه باشه و زمان بين 00:01 دقيقه تا 3:00 بامداد باشه به فرمت 24 ساعت منظورمه،دقيقا كد شنبه هفته قبل رو ميده !!!!!!!

ghasemweb
چهارشنبه 08 دی 1389, 01:20 صبح
مشكل حل شد و راه حل هم واسه من يكي عجيب بود كه php چقدر تنظيمات داره ! براي اين كه هنگام كار با توابع تاريخ و زمان به مشكل اين چنين برخورد نكينم اول بايستي اختلاف زماني رو كه Time-zone هست رو به زمان منطقه خودمون تغيير بديم مثلا براي ما ميشه asia/teharn كه پيشفرضش گرينويچ بود و به خاطر همين از ساعت 12 شب تا 3:30 بامداد توابع تاريخ با يك روز كاستي كار ميكنند. براي تنظيم ميتونيد از كد زير استفاده كنيد:

date_default_timezone_set("Asia/Tehran");

و يا تنظيمات تاريخ سيستم رو از tehran +3:30 به 00:00 گرينويچ تغيير بديد كه به نظر من راه اول معقولتره.
خوش باشيد

hossin.esm
چهارشنبه 08 دی 1389, 07:56 صبح
بله من هم داشتم دقیقا دنبال این تابع می گشتم.