وارد کردن تاریخ شمسی در نرم‌افزارهای تحت وب( Web Application ) به گونه‌ای که سازگاری با مرورگرهای مختلف و بیشترین کارایی فراهم شود یکی از دغدغه‌های مهم برنامه‌نویسان وب است.

تقویم فارسی جاوااسکریپت امیب

نگارش جدید تقویم در تاریخ ۳ اردیبهشت ۱۴۰۴ منتشر شد که مشکل سال کبیسه را برطرف می‌کند.

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

چهار ویژگی مهم در تقویم ایجاد شده عبارتند از:

  • دقیق‌ترین الگوریتم محاسبه‌ی تاریخ با پشتیبانی از سال‌های خورشیدی تا سال ۹۹۹۹
  • شناسایی هوشمند بیش از ۱۸ مدل ورود دستی تاریخ توسط کاربر
  • تغییر ظاهر تقویم تنها با امکانات CSS
  • عدم وابستگی به کتابخانه‌های دیگر و حفظ سازگاری با آن‌ها تا حد ممکن

مهم‌ترین ویژگی این تقویم امکان ورود تاریخ به صورت دستی توسط کاربر است:
فرمت‌های قابل قبول برای ورود تاریخ عبارتند از:

  • ۹۹۰۸۱۴
  • ۱۴۰۸۹۹
  • ۱۳۹۹۰۸۱۴
  • ۱۴/۸/۹۹
  • ۹۹/۸/۱۴
  • ۱۴/۸/۱۳۹۹
  • ۱۳۹۹/۸/۱۴
  • ۱۴-۸-۹۹
  • ۹۹-۸-۱۴
  • ۱۴-۸-۱۳۹۹
  • ۱۳۹۹-۸-۱۴

و فرمت‌های ویژه:

  • ۰۸۱۴
  • ۱۴۰۸
  • ۱۴-۸
  • ۸-۱۴
  • ۱۴/۸
  • ۸/۱۴
  • ۱۴

در فرمت‌های ویژه که سال و ماه وارد نشده‌اند، سال و ماه فعلی به حساب خواهد آمد.
در فرمت‌هایی که سال مشخص نشده باشد، دو رقم ابتدایی در صورت امکان روز محاسبه خواهند شد

روش به‌کارگیری تقویم در صفحات وب


استفاده از این تقویم بسیار ساده است
ابتدا فیلد متنی خود را در متن صفحه قرار دهید:

<input type="text" id="pcal1" class="pdate">

سپس فایل جاوااسکریپت و قالب‌بندی CSS را در سرآمد فایل HTML قرار دهید:

<link rel="stylesheet" href="js-persian-cal.css">
<script src="js-persian-cal.min.js"></script>

دستور تبدیل فیلد متنی به فیلد تاریخ را در انتهای صفحه و در تگ اسکریپت قرار دهید:

<script>
	var objCal1 = new AMIB.persianCalendar( 'pcal1' );
</script>

پارامتر تعریف شده شناسه‌ی( id ) فیلد متنی است که به فیلد تاریخ تبدیل خواهد شد.

پارامتر دوم به تنظیمات اضافی اختصاص دارد و اختیاری است
پارامتر دوم شیءی درون‌خطی با فرمت JSON است. برای نمونه به مثال زیر توجه کنید:

<input type="text" id="pcal1" class="pdate">
<input type="hidden" name="extra" id="extra">
 
<script>
	var objCal1 = new AMIB.persianCalendar( 'pcal1',
		{ extraInputID: "extra", extraInputFormat: "YYYYMMDD" }
	);
</script>

دستور بالا سبب می‌شود فیلد اضافی با شناسه‌ی extra تاریخ را با فرمتی دیگر ذخیره کند
این قابلیت به برنامه‌نویسان در ارزیابی و تبدیل تاریخ یاری می‌رساند

گزینه‌های قابل تغییر - اختیاری


  • extraInputID : شناسه‌ی فیلد اضافی
  • extraInputFormat : فرمت فیلد اضافی
  • onchange: تابعی که هنگام تغییر تاریخ به صورت خودکار فراخوانی می‌شود( به مثال‌ها مراجعه کنید )
  • initialDate: تاریخ پیش‌فرض که هنگام ایجاد فیلد در آن قرار می‌گیرد.
  • defaultDate: چنانچه مقدار فیلد تاریخ معتبری نباشد و کاربر تقویم را باز کند، این تاریخ به او نشان داده می‌شود.
  • divPickerClassName : نام کلاس div اصلی حاوی تقویم برای قالب‌بندی
  • btnClassName : نام کلاس a دکمه‌ی تقویم برای قالب‌بندی

فرمت‌های قابل قبول برای فیلد اضافی عبارتند از:

  • YYYY سال میلادی - چهار یا پنج رقمی
  • MM ماه میلادی - دو رقمی
  • DD روز میلادی - دو رقمی
  • YY سال میلادی - دو رقمی
  • M ماه میلادی - یک یا دو رقمی
  • D روز میلادی - یک یا دو رقمی
  • yyyy سال خورشیدی - چهار رقمی
  • mm ماه خورشیدی - دو رقمی
  • dd روز خورشیدی - دو رقمی
  • yy سال خورشیدی - دو رقمی
  • m ماه خورشیدی - یک یا دو رقمی
  • d روز خورشیدی - یک یا دو رقمی
  • JD روز جولین( تعداد روزهای گذشته از یکم ژانویه سال 4713 پیش از میلاد مسیح(ع) )

فهرست قابلیت‌های تقویم شمسی جاوااسکریپت


  • تغییر ماه و سال با کلیک بر روی دکمه‌های قبل و بعد
  • تغییر ماه و سال با امکان انتخاب از فهرست
  • افزایش و کاهش تاریخ با استفاده از کلیدهای بالا و پایین در فیلد
  • امکان فعال و غیرفعال کردن تقویم به صورت موقت
  • تغییر تاریخ به تاریخ فعلی با کلیک بر روی لینک مخصوص
  • ارزیابی ورودی کاربر و تشخیص تاریخ با ۱۸ فرمت مختلف
  • تغییر قالب DatePicker تنها با تغییر در فایل CSS
  • تشخیص اعداد فارسی و لاتین
  • امکان تبدیل آنلاین تاریخ به فرمت‌های مختلف و ذخیره در فیلد اضافی
  • پشتیبانی از مرورگرهای مختلف
  • مصرف کم حافظه، سرعت و دقت بسیار بالا
  • حجم کم سرآمد( فقط ۲۰ کیلوبایت - فشرده ۷ کیلوبایت )
  • استفاده‌ی بسیار آسان

آزمون به صورت آنلاین


پوسته‌ی اصلی
پوسته‌ی تیره
پوسته‌ی فیروزه‌ای فسفری
پوسته‌ی هلویی

دریافت تقویم فارسی جاوااسکریپت - نگارش ۰.۲.۲ - سوم اردیبهشت ۱۴۰۴


دانلود تقویم فارسی جاوااسکریپت

نسخه حرفه‌ای و تجاری


نسخه‌ی حرفه‌ای تقویم با امکانات پیشرفته و قابلیت انتخاب تاریخ به صورت شمسی،‌ قمری و میلادی را اینجا مشاهده و خریداری کنید.

jQuery


دوستان گرامی «حمید» و در تکمیل «صابر فتح‌اللهی» در کامنت‌ها روشی آسان برای تبدیل فیلدها به تقویم با کمک jQuery معرفی کردند:
1- در انتهای فایل اصلی اسکریپت کد زیر را اضافه کنید

( function( $ ) {
	$.fn.persianCalendar = function(extra) {
		return this.each( function( index, element ) {
			var id = jQuery(element).attr("id");
			new AMIB.persianCalendar( id, extra );
		} );
	};
})( jQuery );

2- با این قطعه کد می‌توان تمامی id‌هایی که مثلا با pcal شروع می‌شوند را تبدیل به فیلد تاریخ کرد:

jQuery("input[id^=pcal]").persianCalendar( {
	initialDate: '1404-10-20',
	defaultDate: '1404-10-20'
} );

تاریخچه تغییرات

۲۷ اردبیهشت ۹۱ - ویرایش ۰.۱.۵

  • رفع اشکال به وجود آمده در باز شدن چند تقویم
  • حذف تمامی دستورات برپایه‌ی eval برای سازگاری با آخرین استانداردهای جاوااسکریپت و افزایش کارایی
  • اصلاح محل نمایش تقویم در مرورگر IE

۱۰ فروردین ۹۲ - ویرایش ۰.۲.۱

  • پارامتر اول سازنده‌ی تقویم حذف شد.
  • دو گزینه‌ی جدید برای تعریف «تاریخ پیش‌فرض» و «تاریخ پیش‌فرض در صورت نادرست بودن انتخاب کاربر» افزوده شد.
  • رویداد onchange به گزینه‌هاافزوده شد.
  • دو گزینه‌ی oExtraInputID و ExtraInputFormat برای رعایت استانداردهای کدنویسی به extraInputID و extraInputFormat تغییر نام یافتند.
  • متد fillDateField علاوه بر رشته، آرایه‌ای حاوی سال، ماه و روز شمسی را نیز می‌پذیرد.
  • صفت enabled برای جلوگیری از عملکرد دکمه‌ی تقویم و بازشدن انتخاب‌کننده به شیء تقویم اضافه شد.
  • فشردن کلیدها بالا و پایین سبب می‌شوند تاریخ یک روز به جلو و عقب حرکت کند.
  • تغییرات ابتدایی برای رعایت آخرین استانداردهای جاوااسکریپت در مدیریت رویدادها به انجام رسید.
  • سازگاری با مرورگرهای مختلف در چند مورد بهبود یافت.
  • بهبود قابل توجه سرعت و کاهش مصرف حافظه به ویژه در هنگام ایجاد چند نسخه از تقویم در یک صفحه.
  • محل نمایش منوی انتخاب سال و ماه تصحیح شد.
  • محل نمایش دکمه‌ی انتخاب تاریخ در پوسته‌های مختلف اصلاح شد.
  • تقویم دیگر مانع استفاده از کلیدهای میانبر مرورگر نمی‌شود( مثلا Ctrl+W ).
  • پوسته‌ی جدید با رنگ تیره به مجموعه‌ی پوسته‌های قابل انتخاب اضافه شد

۳ اردیبهشت ۱۴۰۴ - نگارش ۰.۲.۲

  • مشکل سال‌های کبیسه که از انتهای سال ۱۴۰۳ رخ داده بود برطرف شد.
  • بخشی از کدها که برای سازگاری با مرورگرهای قدیمی نوشته شده بود، حذف شد.
  • نام توابع داخلی تبدیل تاریخ از snake_case به camelCase تبدیل شد تا سازگاری سراسری داشته باشند.
  • محاسبات تاریخ در این نسخه بر اساس محاسبات نجومی انجام می‌شود و انتظار می‌رود مشکل دیگری در آینده در زمینه‌ی الگوریتم رخ ندهد.

۵ خرداد ۱۴۰۴

  • فایل‌های مثال همراه بسته به‌روزرسانی شدند تا در مرورگرهای موبایل بهتر نمایش داده شوند.

۲۶۰ نظر در مورد «تقویم شمسی جاوااسکریپت»

  • سلام
    این تقویم لایسنس خاصی داره اجازه این هست که از ان در نرم افزارهای تجاری سورس بسته استفاده بشه
    چون الان یک تقویم جاوا اسکریپتی دیگه هست تحت gpl3 است و نمی توان در پروژه های غیر متن باز از ان استفاده کرد

  • با سپاس از تقویم زیبایتان
    من از ذخیره تاریخ از رشته 10 تایی استفاده می كنم ولی اجازه ذخیره صفر را نمی دهد مثلا 1390/01/01 را به صورت 1390/1/1 ذخیره می كند لطفا بررسی كنید ممنون

    • امیرمسعود ایرانی می‌گوید:

      کامنت جدید:

      یکی از کاربران تقویم روشی جالب برای انجام این کار را استفاده کرده بودند
      ایشان شناسه‌ی فیلد اصلی را به عنوان فیلد کمکی هم وارد کرده بودند
      با این روش می‌توانید تاریخ را به هر فرمت دلخواه در فیلد اصلی نشان دهید که از آن جمله نمایش صفر قبل از ماه‌ها و روزهای یک رقمی است
      البته باید دقت کنید فرمت مورد نظر طوری باشد که برای تقویم قابل شناسایی باشد و مسئولیت این موضوع بر عهده‌ی برنامه‌نویس است

  • غفوری می‌گوید:

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

    • امیرمسعود ایرانی می‌گوید:

      به این موضوع قبلا فکر کرده بودم
      پیاده‌سازی این کار طوری که رابط کاربری آسیب نبینه کار سختی است( با توجه به اینکه امکان تایپ وجود دارد و بعد از تایپ کاربر علاوه بر تاریخ، ساعت هم باید تشخیص داده شود )
      فعلا قصد ندارم این کار رو انجام بدم
      با این حال اگر کسی بخواهد این کار را انجام دهد از نظر من مشکلی ندارد و سورس فشرده‌نشده را در اختیارش قرار خواهم داد
      اگر می‌خواهید سیستمی جدید طراحی کنید بهتر است تاریخ و زمان را که دو موجودیت جدا هستند را در دو فیلد قرار دهید

  • سلام. ممنون از زحمتی که کشیدین. من عادت ندارم برای کدهای جاوااسکریپت مورد نیازم در سایت‌های فارسی بگردم، چون چیزی پیدا نمی‌شود. برای تقویم فارسی، جستجویی کردم و بعد از چندین جواب بی‌ربط، با ناامیدی به وبلاگ شما رسیدم و چیزی دیدم که نظیرش با این دقت، در مدل‌های خارجی‌اش هم کم‌یاب است. از این بابت بسیار سپاس‌گذارم.
    من در حال طراحی سایتی هستم که برای ویرایش اطلاعات، صفحات لایت‌باکس (JQuery) باز می‌کند و محتویات این صفحه‌ها از طریق AJAX فراخوانی می‌شوند و می‌دانیم که کدهای ارسالی به این طریق، قابلیت اجرای مستقیم جاوااسکریپت را ندارند. البته برای اجرای جاوااسکریپت‌های دل‌خواه، حقه‌ها و ترفندهای بسیاری وجود دارد، از جمله ایجاد روتینی برای دیده‌بانی Textboxهایی با IDهای خاص، که در صورت پیدا شدن یکی از این‌ها، کد داخلش اجرا شود. این روش به‌خوبی جواب می‌دهد، اما اعمالش برای کاری مثل ایجاد فیلد تاریخ، باعث پیچیده شدن وحشتناک صفحه می‌شود. برای رفع این مشکل، بعد از تعریف Textbox، آیکونی گذاشتم مشابه آن‌چه که در نمونه‌ی شما وجود دارد و کاربر با کلیک بر روی آن، کد جاوااسکریپت مورد نظر شما را اجرا می‌کند و آیکون بدل را هم محو می‌کند و به این ترتیب، تغییری در خروجی حاصل نمی‌شود. حسن انجام این کار را با یک Alert ساده کنترل کردم، اما بعد از آن، هیچ اتفاقی نمی‌افتد که نمی‌افتد.
    من از خیلی از کتابخانه‌های JQuery در کدهایم استفاده کرده‌ام و نمی‌دانم که آیا اجرا نشدن کد شما تقصیر آن‌هاست، یا مشکل از جای دیگر آب می‌خورد. حدس دیگرم این است که شاید برنامه به دنبال آدرس‌های خاصی برای بارگیری ملزومات خود می‌گردد که من به خاطر قرار دادن فایل‌های بسته در دو فولدر عقب‌تر، آن‌ها را از دسترس اسکریپت خارج کرده باشم.
    متأسفانه هیچ نسخه‌ی آپلودشده‌ای از آن‌چه که در دست انجام دارم، آماده نیست. البته ویرایش تاریخ فارسی، برای پروژه‌ی فعلی من که امروز و فردا باید برای تحویل آماده شود، لازم نیست، اما جاذبه‌ی آزمایش ابزاری به این زیبایی و ظرافت، مرا تا این نیمه‌های شب بیدار نگه داشت تا زیر و بمش را بررسی کنم.
    سرتان را درد آوردم. یک تشکر دیگر هم لازم است بکنم بابت ابزاری که برای ذخیره‌ی پنهانی تاریخ انتخاب‌شده‌ی کاربر به فرمت‌های دیگر پیش‌بینی کرده‌اید. فکر بکری است و بدون این، فکر می‌کنم ابزار شما برای بیش از هشتاد درصد برنامه‌نویسان به‌کلی بی‌فایده می‌شد.

  • شرمنده که دوباره مزاحم می‌شم و این‌جا رو شلوغ می‌کنم. مشکل من از این‌جا بود که شیء objCal1، چون از داخل تابع ویژه ساخته می‌شد، public نبود و بقیه‌ی توابع آن را نمی‌دیدند. من زیاد جاوااسکریپت بلد نیستم و این اندازه می‌دانم که برای تعریف یک متغیر عمومی، آن را باید بیرون از تابع تعریف کرد و راهی را نمی‌شناسم که از داخل یک تابع، متغیر عمومی تعریف کنیم. مشکل خودم را با «ماست‌مال» کردن حل کردم. یک شیء بیهوده از objCal1 را در ابتدای اسکریپت ساختم و بعد این شیء را مقداردهی کردم. می‌گویم بیهوده، چون در زمان تعریف این شیء، Textbox هنوز ایجاد نشده و بستگی به انتخاب کاربر دارد و خوشحالم که هیچ اخطار و اشکالی به وجود نیامد. امیدوارم روی همه‌ی مرورگرها این ماست‌مالی کار کند. اگر ایده‌ی استانداردی برای حل مشکل من دارید، ممنون می‌شوم راهنمایی بفرمایید.

    • امیرمسعود ایرانی می‌گوید:

      با سلام و تشکر از لطف شما

      برای اینکه از داخل تابع متغیری سراسری ایجاد کنید یکی از راه‌ها این است که تعریف متغیر را به صورت زیر انجام دهید:

      window[ 'objCal1' ] = ...;
  • سلام ممنون از کار بسیار خوبتون
    می خواستم ببینم امکانش هست که به جای اینکه ID یک فیلد رو بهش بدیم تا اونو تبدیل به فیلد تاریخ کنه ، از روندی استفاده بشه که بشه نام کلاسی که اون فیلد داره رو بهش داد تا تموم فیلدهایی که از اون کلاس هستند رو تبدیل به فیلد تاریخ کنه؟ (دقیقا مثل کاری که توابع jQuery انجام میده)

    • امیرمسعود ایرانی می‌گوید:

      اگر قرار باشد ایجاد شیء تقویم بر اساس class باشد و با توجه به دلیل شیءگرا بودن ایجاد تقویم
      نیاز است که اشیا داخل یک حلقه ایجاد شوند. به هر حال لازم است که inputها یک id داشته باشند
      یک کوتاه مانند نمونه کد زیر می‌تواند این کار را انجام دهد:

      var inputs = document.getElementsByTagName( 'input' );
       
      for( var i = 0; i < inputs.length; ++i ) {
       
      	if( inputs[ i ].type == 'text' && inputs[ i ].className == 'pdate' ) {
      		window[ 'objCal' + i ] = new AMIB.persianCalendar( inputs[ i ].id );
      	}
       
      }
  • با سلام وسپاس از کار خوبتون
    یه سوال دیگه ایا امکان این هست که تقویم در یه بازه زمانی محدود نمایش داده بشه مثلا از ۵ سال قبل تا امروز ویا برعکس
    ممنون

    • امیرمسعود ایرانی می‌گوید:

      سلام

      در حال حاضر این امکان در تقویم وجود ندارد
      بررسی تاریخ ورودی کاربر برای قرارداشتن در دامنه‌ی دلخواه کاری ساده است که با چند خط جاوااسکریپت قابل انجام است.
      ساده‌ترین راه این است که تاریخ را در فیلدی جداگانه با فرمت JD ذخیره کنید و محتوای فیلد اضافه را که یک عدد است با JD تاریخ ابتدا و انتها مقایسه نمایید

  • با سلام به شما
    ممنونم از اسکریپت خوبتون

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

    من میخوام یه تاریخ شروع داشته باشم و یه مدت مدت اجرا (تعداد روز) که مدیر وارد می کنه (مثلا شروع 1391/03/03 به مدت 3 روز ) و میخوام این روزها رو محاسبه کنم و در یک dropdownlist نمایش بدم. (محتوای dropdownlist بعد از محاسبه -> 1391/03/03 - 1391/03/04 - 1391/03/05 ) نمیدونم چطوری میتونم یکی یکی روزها رو محاسبه و در dropdownlist بزارم؟؟

    • امیرمسعود ایرانی می‌گوید:

      یک اسکریپت کوتاه برای انجام این کار شما آماده کردم که تاریخ‌های مورد نظر شما رو alert می‌کنه
      اگر مشکلی در استفاده از این اسکریپت دارید لطفا در ایمیل پیگیری کنید

      var pdate = isPersianDate( A$( 'pdate1' ).value ),
      	new_pdate,
      	cur_jd;
       
      if( pdate ) {
      	cur_jd = persianToJD( pdate[ 0 ], pdate[ 1 ],  pdate[ 2 ] );
       
      	for( var i = 1; i <= 3; ++i ) {
      		new_pdate = jdToPersian( cur_jd + i );
      		alert( new_pdate.join( "/" ) );
      	}
       
      }
  • سلام
    از ساعت برای ثبت در فرم می خواهم استفاده کنم , در واقع کافیه تقویم ساعت سیستم را به آخر تاریخ اضافه کنه و لازم نیست از ساعت به عنوان ورودی استفاده بشه
    در مورد تعریف تنظیمات در هنگام ساخت تقویم , در مثالهایی که زده شده فقط آیدی و نام وجود دارد اگر بتوانید مثالی که در آن همه تنظیمات وجود داشته باشد به مثالها اضافه کنید خیلی خوب میشود
    مثلا در موقع تعریف مشخص شود که تقویم در صفحه نمایش داده شود یا متصل به دکمه باشد,
    زمان به عنوان خروجی نمایش داده شود یا نه ,
    محدوده زمانی مشخص شود,
    نوع رنگ بندی تقویم مشخص شود,...
    متشکر

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      مطلبی که قبلا هم در مورد ساعت اشاره کردم همین بود
      اضافه کردن ساعت فعلی کار آسانی است ولی به قول معروف «بزن برویی» به حساب می‌آید و این شیوه از کدنویسی را به هیچ وجه نمی‌پسندم. اضافه کردن ساعت فعلی در سمت اسکریپت کار ساده‌ای است و خودتان هم می‌توانید انجام دهید.
      در مورد تنظیمات، غیر از رنگبندی که کاملا توسط CSS انجام می‌شود بقیه‌ی ویژگی‌ها در تقویم وجود ندارد و باید در نسخه‌های بعدی پیاده سازی شود.
      لطفا در صورتی که ویژگی خاصی نیاز دارید از طریق ایمیل amibct در گوگل آن را برایم بفرستید تا بخش نظرها وبلاگ به «نظرها» اختصاص یابد.
      با تشکر

  • salam
    من از farsicalender.js استفاده کردم برای کنترل اینکه تاریخ وارد شده از تاریخ روز بیشتر نباشه یا کلا مقایسه تاریخ با تاریخ روز شمسی چیکارکنم؟
    برنامه شما این قابلیت رو نداره!!!
    کمکم کنید

    • امیرمسعود ایرانی می‌گوید:

      سلام
      ساده‌ترین کار اینه که یک فیلد hidden اضافی ایجاد کنید و به کامپوننت بگید که تاریخ رو با فرمت JD در اون فیلد ذخیره کنه
      فرمت JD یا روز ژولین عددی است که هر روز یکی به مقدارش اضافه می‌شود
      با مقایسه‌ی عدد محاسبه شده توسط کامپوننت و JD دلخواه می‌تونید به هدفتون برسید
      برای محاسبه‌ی JD روز فعلی از کد زیر استفاده کنید

      var d = new Date(),
      	todayJD = gregorian_to_jd( d.getFullYear(), d.getMonth() + 1, d.getDate() );

      بعد از اجرای این دستور، متغیر todayJD عدد JD متناظر با امروز رو نگهداری خواهد کرد
      این عدد در PHP هم به سادگی قابل محاسبه است
      می‌تونید همین عدد رو در بانک اطلاعاتی هم ذخیره کنید. مقایسه و مرتب‌سازی اون خیلی ساده‌تر از تاریخ است

  • كارتان عالی است . واقعا با دیدن یك پكیج به این خوبی آن هم در یك سایت فارسی زبان شگفت زده شدم . خدا اجرتان بدهد .
    موفق باشید

  • مرسی از پاسختون.
    این todayJD تاریخ روز شمسی رو نگهداری میکنه؟
    بعد چطوری این todayjd رو با تاریخ وارد شده توسط کاربر مقایسه کنم؟ میخام قبل از ذخیره تو دیتابیس مقایسه انجام بشه...تاریخ تولید وارد شده با تاریخ روز مقایسه بشه و اگه بیشتر بود مثلا یه پیغامی بده.

    • امیرمسعود ایرانی می‌گوید:

      بله
      todayJD یک عدد هست که معادل امروز است
      کامپوننت تقویم هم یک ویژگی دارد که می‌تواند JD روز انتخابی توسط کاربر را در یک فیلد ذخیره کند
      روش استفاده از این ویژگی در توضیحات وجود دارد
      شما می‌توانید این دو عدد را با هم مقایسه کنید و در صورت نیاز به کاربر هشدار بدهید
      لطفا در صورت حل نشدن مشکل از طریق ایمیل amibct در gmail گفتگو را دنبال کنید

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

    امکان نمایش inline برای این تقویم وجود نداره؟ یعنی نیازی به کلیک روی دکمه نباشه و همینجور از ابتدا باز نمایش داده بشود.

    ارادت و آرزوی مزید توفیقات

    • امیرمسعود ایرانی می‌گوید:

      سلام و تشکر از لطف شما

      برای باز کردن تقویم از طریق اسکریپت با استفاده از متد showHidePicker روی شیئی که ایجاد کردید می‌تونید این کار رو انجام بدید
      اگر منظور شما این باشه که تقویم همیشه باز باشه
      فعلا این امکان وجود نداره
      این گزینه را هم در برنامه‌ی پیاده‌سازی قرار می‌دم
      هر موقع که کمی فرصت پیدا کنم کارهایی هست که باید انجام بشه

  • آقا خیلی ممنون از این پروژه ، راضی باش ازش توی یک پروژه استفاده کردم و البته لینک وب سایت شما را هم درون سایت اضافه می کنم.

    با تشکر مجدد

  • ali می‌گوید: