انجمن‌های فارسی اوبونتو

جامعه کاربران => پروژه‌ها => نویسنده: سید وحید رضا برهانی در 04 آبان 1395، 09:49 ق‌ظ

عنوان: تاریخ شمسی در bash
ارسال شده توسط: سید وحید رضا برهانی در 04 آبان 1395، 09:49 ق‌ظ
من خیلی وقت بود که با نبود تاریخ شمسی مشکل داشتم. اما kde بود! که اون هم متاسفانه توی نسخه جدیدش دیگه از تقویم شمسی پشتیبانی نمی کنه!(kde3 بهتر از kde4 بود و kde4 بهتر  از kde5 هست ... و kde همچنان داره سقوط آزاد می کنه!)
قبلا هم تلاشهایی کرده بودم توی http://forum.ubuntu.ir/index.php?topic=111052.0
ولی ایندفعه تابع تبدیل تاریخ اش رو با bash پیاده کردم. الگوریتم اش رو هم از پروژه jdf (تاریخ جلالی برای PHP) گرقتم.
از این اسکریپت می شه برای تبدیل تاریخ میلادی به شمسی هم استفاده کرد.
با اینکه چیز ساده ای هست ولی به نظرم خیلی ها بهش نیاز داشته باشند.
برای آدمهای تنبلی مثل خودم لینکش رو اینجا می زارم.
https://gitlab.com/undergroundman/jalalidate/blob/master/jdate.sh
عنوان: پاسخ : تاریخ شمسی در bash
ارسال شده توسط: دانیال بهزادی در 04 آبان 1395، 02:04 ب‌ظ
با jdate موجود در بستهٔ jcal چه تفاوت‌هایی داره؟
عنوان: پاسخ : تاریخ شمسی در bash
ارسال شده توسط: سید وحید رضا برهانی در 04 آبان 1395، 04:33 ب‌ظ
هیچی! همه ی چیزهایی که توی اسکریپت من بود توی jcal هم هست.
فقط نکته ای که هست اینکه من jcal رو الان دیدم :) (من هیچ وقت حرفه ای نمی شم)
البته تنها فرقش اینکه اسکریپت من با بش هست و نیاز به کامپایل یا نصب چیزی نداره.
عنوان: پاسخ : تاریخ شمسی در bash
ارسال شده توسط: B در 09 آبان 1395، 02:23 ق‌ظ
برنامه خیلی زیبا و دوست داشتنی و خیلی خوشمان امد؛ مدت‌ها بود دنبال همچین چیزی بودم: واقعا دستت درد نکنه

عنوان: پاسخ : تاریخ شمسی در bash
ارسال شده توسط: سید وحید رضا برهانی در 09 آبان 1395، 10:28 ب‌ظ
خوشحالم بدردت می خوره.
پروژه jcal هم چیز جالبیه (البته بش نیست)
عنوان: پاسخ : تاریخ شمسی در bash
ارسال شده توسط: A. Rahmati در 18 امرداد 1398، 06:00 ب‌ظ
سلام.
این برنامه‌ی خیلی خوبی است ولی زمانی که در قسمت روز یا ماه عدد ۰۸ یا ۰۹ وارد شود به مشکل بر می‌خورد.
التبه مشکل خیلی جدی نیست اما اگر بخواهیم در یک برنامه‌ی دیگر ازشان استفاده کنیم می‌تواند اذیت کننده باشد.
می‌شود این مشکل را درست کرد؟
bash ./Downloads/jdate.sh -d 2013-02-02
Shabe 14  Bahman 1391
~$ bash ./Downloads/jdate.sh -d 2013-08-02
./Downloads/jdate.sh: line 51: 08: value too great for base (error token is "08")
none   none 5
~$ bash ./Downloads/jdate.sh -d 2013-8-02
Jomee 11  Mordad 1392
~$ bash ./Downloads/jdate.sh -d 2013-09-02
./Downloads/jdate.sh: line 51: 09: value too great for base (error token is "09")
none   none 1
~$ bash ./Downloads/jdate.sh -d 2013-9-02
DoShanbe 11  Shahrivar 1392
~$ bash ./Downloads/jdate.sh -d 2013-11-08
./Downloads/jdate.sh: line 51: 08: value too great for base (error token is "08")
none   none 5
~$ bash ./Downloads/jdate.sh -d 2013-11-8
Jomee 17  Aban 1392
~$ bash ./Downloads/jdate.sh -d 2013-11-06
ChaharShanbe 15  Aban 1392

اگر نه کسی می‌تواند بگوید که چگونه می‌تواند از آن jdate (که درکادرهای بالا نوشتید) در Bash استفاده کرد؟
عنوان: پاسخ : تاریخ شمسی در bash
ارسال شده توسط: سید وحید رضا برهانی در 11 شهریور 1398، 05:56 ق‌ظ
سلام
ببین مشکل اسکریپت بالا این هست که در بش اعداد وقتی با صفر شروع می شن یعنی عدد اکتال اند (مبنای ۸) در نتیجه از ۰۰ تا ۰۷ معنی دازند و وقتی ۰۸ یا ۰۹ بهش می دیم چون از مبنا بزرگتر می شن بی معنی می شن و خطا می ده
برای رفع این مشکل باید صفر اول رو حذف کرد تا به عنوان عدد مبنای ۱۰ درنظر گرفته بشه.
رفع مشکل :
می تونی خط ۴۶ و ۴۷ رو به خط زیر تغییر بدی :
month=${2#0}
day=${3#0}

فایل روی اون مخزن گیت هم آپدیت کردم و می تونی از همون هم استفاده کنی
عنوان: پاسخ : تاریخ شمسی در bash
ارسال شده توسط: A. Rahmati در 12 شهریور 1398، 02:10 ق‌ظ
متشکرم وحید.
 \\:D/