PDA

View Full Version : تبدیل تاریخ هجری به میلادی



fa_rezaei
چهارشنبه 08 فروردین 1386, 13:20 عصر
سلام به همه دوستان
من 1 فرم دارم و می خوام کاربر با انتخاب یک بازه در تاریخ هجری از توی بانک یک سری اطلاعات رو ببینه حالا مشکل من اینجاست که فیلد دیتابیس من تاریخ رو به فرم 2006-12-07 12:51:00 داره و من باید تاریخ هجری رو اول به میلادی تبدیل کنم و بعد تاریخ میلادی رو در بانک جستجو کنم.شما راه حلی دارید برای رفع این مشکل؟؟

moslem-visual
چهارشنبه 08 فروردین 1386, 13:33 عصر
فعلا قابلیت استفاده از تاریخ شمسی در دیتابیسها نیست اما میتونی از این تابع تبدیلی استفاده کنی که راهنمای کامل استفاده اش هم توی سایت iranphp.net و همین اینجا هستش:

fa_rezaei
چهارشنبه 08 فروردین 1386, 14:55 عصر
سلام
میدونم که این قابلیتدر mysql نیست.میدونید من 1 فرم دارم و می خوام کاربر با انتخاب یک بازه در تاریخ هجری از توی بانک یک سری اطلاعات رو ببینه حالا مشکل من اینجاست که فیلد دیتابیس من تارخ رو به فرم 2006-12-07 12:51:00 داره و من باید تاریخ هجری رو اول به میلادی تبدیل کنم و بعد به فرم میلادی اون در بانک جستجو کنم.شما راه حلی دارید برای این مشکل؟؟

moslem-visual
چهارشنبه 08 فروردین 1386, 15:51 عصر
من دقیقا مشکل شما رو متوجه نشدم، شما با کدوم قسمتش مشکل دارید؟

fa_rezaei
پنج شنبه 09 فروردین 1386, 09:35 صبح
فرم من شبیه به این است

http://www.iran.tc/image/1.jpg


حالا من میخوام کاربر با انتخاب بازه تاریخ هجری یک سری اطلاعات را که در بانک بین این تاریخ است را نشان دهد. حالا مشکل من اینجاست که فیلد جدول من به صورت میلادی است.باید چکار کنم؟؟یعنی چطوری این بازه تاریخ هجری رو به میلادی تبدیل کنم؟؟

moslem-visual
پنج شنبه 09 فروردین 1386, 15:22 عصر
اگه درست فهمیده باشم شما با تبدیل تاریخ شمسی به میلادی مشکل داری، خب اونم توی سایت iranphp.net بخش مقالاتش یه مقاله کامل در موردش داره اما من اینجا نحوه ی تبدیل تاریخ شمسی به میلادی از طریق همون فایلی که براتون اتچ کردم رو میدم، این تابع سه مقدار سال، ماه و روز شمسی رو به صورت آرایه میگیره و سه مقدار دیگه رو به صورت میلادی بر میگردونه، متغیرهایی که اولشون s داره تاریخ میلادی رو از تابع تحویل میگیرن و شما میتونید ازشون استفاده کنید:


/* Sample for www.iran.tc => Fa_Rezaei*/<?php
require_once "jdf.php";

$year=1386;
$month=1;
$day=9;
list($syear,$smonth,$sday)=jalali_to_gregorian($ye ar,$month,$day);

echo "year: ".$syear." month: ".$smonth." day: ".$sday;

?>



مشکلتون همین بود؟

fa_rezaei
سه شنبه 14 فروردین 1386, 10:23 صبح
مشکلم حل شد.
من نمی دونستم کدوم تابع رو باید استفاده کنم اما بالاخره با تست کردن تک تک تابع هائی که فکر می کردم میتونه مشکلم رو حل کنه فهمیدم کدوم تابع است.

ealvandi
سه شنبه 14 فروردین 1386, 13:41 عصر
سلام من با توابع فایل JDF کار کرده ام

نقصی که در فایل JDF وجود داشت این بود که پس از تبدیل تاریخ میلادی به شمسی

نمیشد با اعداد و تاریخ به دست آمده کار محاسباتی انجام داد که من 2 تابع کوچک تو

اون نوشتم که مشکل محاسبه رو حل کرد ( number2eng ) و ضمنا برای بدست آوردن چند

روز ، ماه و سال دیگر برای تاریخ شمسی یک تابع دیگه نوشتم ( shamsi_date )من فایل

اصلاح شده رو براتون میذارم

امیدوارم که به دردتون بخوره

Milad
سه شنبه 14 فروردین 1386, 14:18 عصر
خیلی ممنون که فایل اصلاح شده رو ارسال کردید :
برای اینکه بتونید اعداد رو به صورت انگلیسی در خروجی ببنید باید به خط اول تابع jdate دقت کنید :


//set 1 if you want translate number to farsi or if you don't like set 0
$transnumber=1;

اون تابع دوم هم دقیقا نفهمیدم چی کار می کرد ولی خب فکر کنم راحت تر از اونی که نوشتی می تونستی پیاده سازیش بکنی

ealvandi
سه شنبه 14 فروردین 1386, 18:33 عصر
تابع دومی (shamsi_date(year,moon,day

جهت بدست آوردن یک تاریخ جلوتر هست مثلا اگه بخوای

یک سال بعد رو بدست بیاری باید تابع رو اینجوری فراخوانی کنی


shamsi_date(1,0,0)


یک ماه بعد رو بدست بیاری


shamsi_date(0,1,0)


یک روز بعد رو بدست بیاری


shamsi_date(0,0,1)


یک روز و یک ماه و یکسال بعد رو بدست بیاری


shamsi_date(1,1,1)


واگه همه پارامترها رو با 0 فراخوانی کنید تاریخ همان روز رو ولی به شمسی بر میگردونه

bigmag
پنج شنبه 16 فروردین 1386, 18:48 عصر
[quote=fa_rezaei;322079]فرم من شبیه به این است

http://www.iran.tc/image/1.jpg


برای این کار می توانید از دیتابیس Access استفاده کنید منم از این دیتابیس استفاده میکنم بعدش راه بعدی اینه که ساعت کامپیوتر رو از طریق کنترل پنل فارسی کنید