PDA

View Full Version : اسکریپت تبدیل تاریخ



aarash_v
جمعه 22 شهریور 1387, 12:51 عصر
با سلام خدمت دوستان عزيز
يک در خواست داشتم:
يک تکه کد مي خواستم که تاريخ ميلادي رو از /bin/date در يافت کنه و روز و ماه و سال شمسي رو (به عدد) در سه تا متغير بريزه.
مثلا $ruz و $ mah و $sal
فقط تا همين جا.
اگه همچین تاپیکی قبلا وجود داشته باز هم لطفا این تاپیک رو پاک نکنید، باز هم تو همین تاپیک سوال دارم...
پیشاپیش ممنونم

ilius.gnu
جمعه 22 شهریور 1387, 23:59 عصر
سلام.
یه برنامه از شرکت فارسی‌وب هست که تقریباً همین کار رو انجام میده.
http://fa.farsiweb.ir/fawiki/Iranian_Calendar
من سورس برنامه(به C) رو یه خورده ویرایش کردم(تا سال و ماه و روز رو بصورت عددی و مجزا چاپ کنه) بعد با gcc کامپایل کردم و همراه با سورسش آپلود کردم.
http://www.freefilespot.com/download.php?file=a1e9bfb6a9e8874aa323029f463b54fb
حالا از اون فایل اجرایی باینری(به اسم مثلا jalali) میتونید توی shell استفاده کنید. از اونجایی که سال و ماه رو روز رو بصورت عدد و با یک فاصله چاپ میکنه. میتونید خروجیش رو بریزید توی یه آرایه، مثلاً اگه فایل اجرایی jalali توی دایرمتوری جاری باشه:

JD=(`./jalali`)
echo ${JD[0]}
echo ${JD[1]}
echo ${JD[2]}
یعنی میشه به هر کدوم(سال و ماه و روز) بصورت مجزا دسترسی پیدا کرد(مثلاً چاپ کرد). میشه تی هر متغیر دیگه‌ای هم ریخت.

sal=${JD[0]}
mah=${JD[1]}
ruz=${JD[2]}

در ضمن اون برنامهٔ فارسی‌وب به چند زبان نوشته شده: C و PHP و JavaScript و #C و Tex
اما به زبان شل(bash یا sh) نوشته نشده. اگه می‌خواید cross platform باشه، مثلاً می‌تونید سورس برنامه به زبان PHP رو بردارید ویرایش کنید و استفاده کنید. در ضمن این برنامه فقط برای تاریخ‌های تا سال 2088 درست جواب میده.

aarash_v
یک شنبه 24 شهریور 1387, 08:05 صبح
چرا فقط تا 2008 ؟ :گریه:
کاریش نمیشه کرد؟:افسرده:

ilius.gnu
دوشنبه 25 شهریور 1387, 01:44 صبح
چرا فقط تا 2008 ؟ :گریه:
کاریش نمیشه کرد؟:افسرده:
دوست عزیز 2088 نه 2008 !

aarash_v
سه شنبه 26 شهریور 1387, 09:20 صبح
:اشتباه: ببخشید ؛ اشتباه دیدم :لبخند: