PDA

View Full Version : سوال: تبدیل میلادی به شمسی (February 11 2012)



vb2005
دوشنبه 22 اسفند 1390, 03:34 صبح
سلام دوستان ، بعد از سالها برگشتم به انجمن برنامه نویس :تشویق:
یه سایتی دارم که از cms خاصی استفاده می کنه ، تعداد زیادی مطلب قبلاً ارسال شده که با تاریخ میلادی ثبت شدن. می خواستم بدونم چطور میشه تاریخ شبیه February 11 2012 رو به شمسی تبدیل کرد؟
از اسکریپت jdf هم استفاده کردم ولی نتونستم کاری کنم.
لطفاً با ذکر مثال راهنمایی کنید. ممنون.

narsic
دوشنبه 22 اسفند 1390, 09:17 صبح
با همون اسکریپت میتونید انجامش بدید.
اگه انجامش دادید مشکلاتتون رو بگید تا راهنمایی کنیم.
موفق باشید

MMSHFE
دوشنبه 22 اسفند 1390, 09:56 صبح
دوست گرامی، تاریخ هایی که توی دیتابیس دارین رو با استفاده از تابع strtotime تبدیل به timestamp کنید و بعد این مقدار رو با اسکریپت JDF دوباره به تاریخ شمسی برگردونید البته تابع gregorian_to_jalali هم عمل تبدیل مستقیم رو انجام میده ولی از اونجا که احتمال داره با فرمت خاصی ذخیره کرده باشین که این تابع نشناسه، روش اول نتیجه بهتری میده. هرچند پیشنهاد میکنم قبلش تاریخ رو به فرمت مناسب در بیارین و بعد، کارهایی که گفتم رو انجام بدین. مثال:


require_once 'jdf.php';
$date = 'February 11 2012';
list($m, $d, $y) = explode(' ', $date);
$months = array(1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
foreach($months as $num => $month) {
if($month == $m) {
$m = $num;
break;
}
}
$date = "{$y}/{$m}/{$d}";
$ts = strtotime($date);
$jdate = jdate('Y/m/d', $ts);

موفق باشید.

vb2005
دوشنبه 22 اسفند 1390, 13:08 عصر
ممنون دوستان مشکل برطرف شد.
موفق باشید.

chn367
دوشنبه 28 فروردین 1391, 01:47 صبح
سلام. چونکه با تاریخ میلادی و شمسی مشکل داشتم (اشکال در تبدیل) مربوط به این پست میشد تصمیم گرفتم اینجا بنویسم!
البته پس از جستجو در پست های مختلف و جمع بندی نظرات دوستان:

کد ذیل که اجرا میکنم با اینکه تاریخ میلادی درست هست ولی تاریخ شمسی که چاپ میشه درست نیست!


<?php

require_once 'inc/jdf.php';
$date = '2012-04-16';
list($m, $d, $y) = explode('-', $date);
$date = "{$y}/{$m}/{$d}";
$ts = strtotime($date);
$jdate = jdate('Y/m/d', $ts);

echo $jdate ;

?>

و خروجی کد: 1348/10/11

چیکارکنم درست بشه؟
مشکل اصلی اینجاست که یک سری اطلاعات روی دیتابیس قبلا ذخیره شده به میلادی

MMSHFE
دوشنبه 28 فروردین 1391, 12:23 عصر
اینو امتحان کنید:


require_once 'inc/jdf.php';
$date = '2012-04-16';
list($m, $d, $y) = explode('-', $date);
$date = "{$d} {$m} {$y}";
$ts = strtotime($date);
$jdate = jdate('Y/m/d', $ts);
echo $jdate;

امیدوارم درست بشه.

chn367
یک شنبه 03 اردیبهشت 1391, 00:49 صبح
باسلام و عرض تشکر.
خیر متاسفانه تغییری نکرد! عدد روز/ماه و سال عوض کردم باز هم همون نتیجه رو میده!

MMSHFE
یک شنبه 03 اردیبهشت 1391, 08:14 صبح
یعنی این هم کار نمیکنه؟


require_once 'inc/jdf.php';
$date = '2012-04-16';
list($y, $m, $d) = explode('-', $date);
$date = "{$d} {$m} {$y}";
$ts = strtotime($date);
$jdate = jdate('Y/m/d', $ts);
echo $jdate;

اینو الآن تست کردم و کار میکرد.