PDA

View Full Version : مبتدی: تبدیل تاریخ به شمسی و ساعت GMT به محلی



mojrianweb
یک شنبه 04 مهر 1395, 10:07 صبح
با سلام،
من از یه کدی استفاده کردم که یه تاریخ و ساعت از گوگل میگیره، تاریخ و ساعت آخرین بازدید گوگل از سایته..
که فرمتش اینجوریه: Sep 25, 2016 05:24:06 GMT
که کلش یک جا تو یه متغیر سیو میشه و بعد چاپ میشه ، چجوری این فرمت تاریخ و ساعت و میتونم با jdf و اینا تبدیل کنم؟
یه راهنمایی بکنید ممنون میشم، phpم هم در حده صفره :ناراحت:

mojrianweb
یک شنبه 04 مهر 1395, 16:38 عصر
تاریخ رو درست کردم ساعت رو چطوری +3.5 کنم؟

plague
یک شنبه 04 مهر 1395, 17:02 عصر
میتونی با strtotime تبدیلش به epoch بعد با تابع date تبدیل کنی به تاریخ


$new_date = date('Y-m-d H:i:s' , strtotime("Sep 25, 2016 05:24:06 GMT"));

البته اینجوری تاریخ رو به منطقه زمانی سرورت میبره که اگه رو ایران باشه حل میشه مشکلت

ولی این روش هم وجود داره که دیگه ریسک نمیکنه و مستقیم تایم زون رو تغییر میده



$dt = new DateTime("Sep 25, 2016 05:24:06 GMT");
$tz = new DateTimeZone('Asia/Tehran');
$dt->setTimezone($tz);
echo $dt->format('Y-m-d H:i:s');


تا اونجا که یادمه jdf کاری به منطقه زمانی و ساعت نداره و فقط تاریخ رو تغییر میده (خیلی وقته استفاده نکردم شاید اشتباه کنم )
یعنی شما اول باید تاریخ میلادی رو بیاری به منطقه زمانی تهران با روش های بالا بعد تبدیلش کنی به شمسی

mojrianweb
دوشنبه 05 مهر 1395, 10:45 صبح
اها مرسی از پاسختون روش دومتون ساعتش اوکی بود ولی تاریخ رو تبدیل نمیکرد و نبایدم میکرد چون بدون jdf ه.
من خودم با اینور اونور کردن یه کارایی کردم و jdf رو ادد کردم تقریبا اوکیه، ببینید استاندارد هست؟



$date = Sep 25, 2016 05:24:06 GMT;
$mah = substr($date,0,12);
$mah = jstrftime('%A,%e %B %Y ', strtotime($mah));
$sat = substr($date,-12,-4);
$sat = date('H:i:s', strtotime($sat));
echo $mah;
echo "<br />";
$zzz = strtotime($sat)+12600;
echo jdate("H:i:s", $zzz);

plague
دوشنبه 05 مهر 1395, 15:45 عصر
من که نمیدونم میخای چیکار کنید و اون 12600 که اضافه کردی بهش برای چیه ولی اگه جواب میگیری که مشکلی نیست
ولی من نمیگیرم اینهمه substr که زدی برا چیه فکر میکنم همشون زاید باشن و بدون اون هم جواب میگیری
همچنین فکر میکنم کل این



$sat = substr($date,-12,-4);
$sat = date('H:i:s', strtotime($sat));
$zzz = strtotime($sat)+12600;
echo jdate("H:i:s", $zzz);

تو همین جا میشه و خروجیشون یکی باشه (فکر میکنم تو jdate خودش از تابع date استفاده میکنه و نیاز نیست شما یبار با date برگردونی بعد نتیجه رو بفرستی به jdate )



jdate("H:i:s", strtotime("Sep 25, 2016 05:24:06 GMT")+12600)