PDA

View Full Version : تبدیل تاریخ میلادی به شمسی(لطفا دقت فرمایید.میلادی به شمسی)



ghiravani
پنج شنبه 12 مرداد 1391, 18:28 عصر
با سلام.با چه تابعی میتونم تاریخ شمسی بهش بدم و تاریخ رو به میلادی تبدیل کنه؟؟
الان برای تبدیل تاریه میلادی به شمسی از تابع jdate استفاده میکنم.
خوبی این تابع اینه که محدودیتی در نحوه ورود تاریخ ندارم.مثلا با هر فرمتی به تابع ، تاریخ میلادی بدم ، بهم تاریخ شمسی رو میده.

مثلا بهش تاریخ بر اساس تابع
time()
میدم و تاریخ رو تبدیل به شمسی میکنه.

حالا تابعی میخوام که تاریخ شمسی رو بهش بدم و تاریخ میلادی بهم بده.(اگه بدون محدودیت در کار باشه که دیگه عالی هست.)

ممنونم
راستی تابعی که من برای تبدیل تاریخ میلادی به شمسی ازش استفاده میکنم رو ضمیمه کردم

Unique
پنج شنبه 12 مرداد 1391, 22:07 عصر
از تابع jalali_to_gregorian در همین فایل استفاده کنید

ghiravani
جمعه 13 مرداد 1391, 10:21 صبح
از تابع jalali_to_gregorian در همین فایل استفاده کنید

ممنون.اما اون تابع رو تست کردم و خوب عمل نکرد.

تاریخ شمسی ای که تصمیم دارم به میلادی تبدیل بشه مثلا به این صورت هست:


$str = "1391/05/13 - 09:58:00";


یه تابع در php هست که هر تاریخ میلادی ای بهش بدید با هر فرمی ، به یه عدد 11 رقمی به این صورت تبدیل میکنه: 1343772000
اسم تابع strtotime هست.
مثلا:



echo strtotime("2012/08/01");//خروجی: 1343772000
echo "<br/>";
echo strtotime("2012-05-21T00:43:22+01:00");//خروجي: 1337557402


حالا یه تابعی لازم دارم تا ابتدا تاریخ شمسی با هر فرمتی (مثلا: 1391/05/13 - 09:58:00) رو بهش بدم و تاریخ میلادیش رو برگشت بده.سپس تاریخ میلادی برگشت داده شده رو به تابع strtotime بدم تا بهم یه عدد 11 رقمی بده برای مقایسه تاریخ ها با یکدیگر.

ممنونم

MMSHFE
جمعه 13 مرداد 1391, 14:41 عصر
دوست عزیز، ابتدا اسکریپت JDF رو که ضمیمه کردم دانلود و در کنار اسکریپتتون کپی کنید. بعد از تابع زیر استفاده کنید:


<?php
function j_to_g($format, $date = '') {
require_once 'jdf.php';
date_default_timezone_set('Asia/Tehran');
$ts = time();
if(strpos($date, '/') !== false) { // Date is given as string
if(strpos($date, '-')) { // Date and time given
$date = trim(substr($input, 0, strpos($date, '-') - 1)); // Remove time part
}
list($j_y, $j_m, $j_d) = explode('/', $date);
list($y, $m, $d) = jalali_to_gregorian($j_y, $j_m, $j_d);
$ts = strtotime($y . '/' . $m . '/' . $d);
}
elseif($date !== '') {
$ts = $date;
}
return date($format, $ts);
}
?>

سعی کردم همه حالتها رو پوشش بده. شما میتونید به این تابع format تاریخ موردنظرتون رو برای خروجی بدین و برای پارامتر دوم هم میتونید تاریخ شمسی رو بصورت یک رشته مثل 1391/5/13 یا Timestamp مثل 1343971800 بفرستین.
موفق باشید.

Unique
جمعه 13 مرداد 1391, 18:51 عصر
حالا یه تابعی لازم دارم تا ابتدا تاریخ شمسی با هر فرمتی (مثلا: 1391/05/13 - 09:58:00) رو بهش بدم و تاریخ میلادیش رو برگشت بده.سپس تاریخ میلادی برگشت داده شده رو به تابع strtotime بدم تا بهم یه عدد 11 رقمی بده برای مقایسه تاریخ ها با یکدیگر.

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

ghiravani
جمعه 13 مرداد 1391, 23:19 عصر
دوست عزیز، ابتدا اسکریپت JDF رو که ضمیمه کردم دانلود و در کنار اسکریپتتون کپی کنید. بعد از تابع زیر استفاده کنید:
سعی کردم همه حالتها رو پوشش بده. شما میتونید به این تابع format تاریخ موردنظرتون رو برای خروجی بدین و برای پارامتر دوم هم میتونید تاریخ شمسی رو بصورت یک رشته مثل 1391/5/13 یا Timestamp مثل 1343971800 بفرستین.
موفق باشید.
ممنونم دوست عزیز.واقعا لطف کردید


دوست عزیز شما هلو برو تو گلو میخواین ! اینا که میگین با همون تابع انجام میشه ! فقط کمی محاسبه داره که مدیر سایت براتون تابعش کردند ! موفق باشین
حالا من مجبور شدم واسه یه قسمت از کارم اینجا سوال پرسیدم.باز شما رو جوو گرفت دوست عزیز!اگه کارم عجله ای و فوری نبود اینجا سوال نمی پرسیدم

Unique
شنبه 14 مرداد 1391, 12:28 عصر
حالا من مجبور شدم واسه یه قسمت از کارم اینجا سوال پرسیدم.باز شما رو جوو گرفت دوست عزیز!اگه کارم عجله ای و فوری نبود اینجا سوال نمی پرسیدم
قصد جسارت نداشتم ! امیدوارم همیشه سوال هاتون را بپرسین تا وضع مملکت ما از این بد تر نشه که اگه من باعث شدم قید سوال پرسیدن توی انجمن را بزنید عذرخواهی میکنم !