PDA

View Full Version : سوال: چطور تاریخ jdate شده رو از دیتابیس بگیرم و در jdate بریزم؟



theboy
سه شنبه 10 بهمن 1391, 17:45 عصر
سلام.
من برای پست هام تاریخ رو به صورت jdate در دیتابیس ذخیره کردم.
من تاریخ رو از دیتابیس می گرم، مثلا با این کوئری:


$test = mysql_query("SELECT * FROM `posts`);
$testy = mysql_fetch_array($test);
$date = $testy['date'];

بعد الان می خوام این تاریخ رو بریزم توی تابع jdate
یعنی اگه مثلا تاریخ این بود: 12/2/91
بتونم با jdate تغییرش بدم و اینطوریش کنم:
12 اردیبهشت 1391

چطوری میشه اینکارو کرد؟(البته اگه فرقی می کنه باید بگم تمام اینکارها داخل حلقه انجام میشند)

mahmod2000
سه شنبه 10 بهمن 1391, 17:57 عصر
شما اگه این تاریخ رو با jdate به همین شکل بریزید تو دیتابیس واسه خوندنش هم به همین صورت خونده میشه دیگه.. utf8 یادتون نره

theboy
سه شنبه 10 بهمن 1391, 18:06 عصر
شما اگه این تاریخ رو با jdate به همین شکل بریزید تو دیتابیس واسه خوندنش هم به همین صورت خونده میشه دیگه.. utf8 یادتون نره
متوجه سوال من نشدید! من مثلا تاریخ رو به این صورت می ریزم تو دیتابیس : jdate(y/m) الان می خوام به این صورت نشون بدم: jdate(Y/F)

مهرداد سیف زاده
سه شنبه 10 بهمن 1391, 19:11 عصر
بهتر نبود تاریخ رو بصورت time می ریختیت توی دیتابیس الان آزادی عمل بیشتری داشتید. من توی تابع jdate ندیدم فرمت تاریخ از قبل ذخیره شده رو تغییر داد.
شاید ابتکار بخرج بدید جالب باشه. مثلا تاریخ رو به میلادی برگردونید(خود jdate) انجام میده و بعد به صورت تاریخ یونیکس دربیارید(با توابعphp) و در آخر دوباره به تابع jdate بدید تا به فرمت دلخواه نشونش بده.
و راهکار بهتر با تابع jmktime که ورودی جلالی می گیره و خروجی تاریخ یونیکس برمی گردونه. پارامترهاش بصورت زیر هست.

jmktime( $hour , $minute , $second , $month , $day , $year , $is_dst );

jmktime(6,15,34,11,22,1389);// خروجی: 1297392334

بجای ساعت و دقیقه و ثانیه میتونی '0' قرار بدی و تاریخ یونیکس رو بگیری. بعد از گرفتن با jdate به فرمت دلخواه برگردون.

مثلا همین عدد تولید شده رو به صورت زیر به jdate میدی:

jdate('H:i:s P | l, j / F / Y' , '1297392334');

theboy
سه شنبه 10 بهمن 1391, 19:44 عصر
نه دیگه خیلی سخت شد!
مشکلی نیست می تونم به صورت time بریزم توی دیتابیس! بعدش باید چیکار کنم؟

SadeghPro19
سه شنبه 10 بهمن 1391, 20:24 عصر
وقتی به صورت تایم ذخیره کنی فقط کافیه به این شکل استفاده کنید:

jdate('Y/F/d',$time)
متغییر $time همون تایمی هست که از دیتابیس خونده شده.

theboy
سه شنبه 10 بهمن 1391, 20:51 عصر
آقا این تاریخ رو غلط می زنه!
سال رو 1348 میزنه!

ravand
سه شنبه 10 بهمن 1391, 21:01 عصر
از این دستور استفاده کن تا دقیق بهت نشون بده:

date_default_timezone_set('Asia/Tehran');
یعنی اینو اضافه کن.

plague
چهارشنبه 11 بهمن 1391, 17:23 عصر
باید time() ذخیره کنی تو دیتبایس
اگه خروجی بهت 1348 میده یعنی کلا ورودی که به تابع دادی اشتباه بوده و تابع نتونسته اونو بخونه برای همین 0 در نظر گرفته شده که 1348رو برمیگردونه که تاریخ شروع این سیستمه (از 1348 شروع میشه تاریخشون )

قبل از اینکه تاریخ رو از دیتابیس بریزی توی تابع یه اکو بکن ببین چی از دیتابیس میگیری