یکی از پیچیدهترین بحثها در برنامهنویسی، تنظیم کردن ساعت برنامه با ساعت کشوری خاص است به خصوص وقتی یک برنامه مثل تستا قرار باشد در کشورهای مختلف و تقویمهای مختلف اجرا شود.
ما محدودیتهای زیادی در این زمینه داشتیم که سعی کردیم با روشهایی آنها را رفع کنیم.
از جمله اینکه ما هنوز تابعی که بتواند به درستی یک لحظه میلادی را به لحظه دقیق شمسی تبدیل کند نداریم. فقط میتوانیم روز را تعیین کنیم. در مورد ساعت، دقیقه و ثانیه مشکلات زیادی وجود دارد.
به هر حال، نکاتی در مورد محدود کردن یک آزمون به زمان خاص (یعنی شروع مهلت شرکت و پایان مهلت شرکت در یک زمان خاص باشد) عرض میکنیم:
۱- وقتی هنگام تعیین محدودیت، «به شمسی» را انتخاب میکنید، یعنی دارید به ساعت تهران کار میکنید. پس لازم نیست نگران اختلاف ساعت ایران با ساعت گرینویچ و یا TimeZone ایران و سیستم خود و امثالهم باشید. به ساعت رسمی ایران بگویید که آزمون در چه تاریخی شروع و در چه تاریخی ختم شود. تستا با توجه به تنظیمات سرور سایت شما ساعت را به درستی در دیتابیس ذخیره میکند.
۲- وقتی برای یک آزمون «به شمسی» تعیین فرجه زمانی میکنید و سپس به ویرایش آن آزمون میروید، میبینید که «به میلادی» تبدیل شده است. دقت کنید که همانطور که در بخش ویرایش توضیح دادهایم، این تاریخ میلادی معادل همان تاریخ شمسی است که شما وارد کرده بودید. پس لازم نیست نگران شوید که نکند این تاریخ، تاریخ مد نظر من نیست.
اگر خواستم تاریخ را تغییر دهم باید چه کار کنم؟
مشکلی نیست، مجدداً «به شمسی» را انتخاب کنید و تاریخ شروع و پایان جدید را اعلام کنید.
بهتر نبود وقتی من شمسی را انتخاب میکنم، در ویرایش نیز «به شمسی» انتخاب شده باشد و تاریخ به شمسی دیده شود؟
چرا، بهتر بود. ما همه اینها را میدانیم، اما محدودیتهای فنی اجازه نمیداد این کار را کنیم. یعنی ما نمیتوانیم بفهمیم تاریخی که فعلاً در دیتابیس درج شده، در ابتدا به میلادی وارد شده یا به شمسی و اگر هم با یک فیلد اضافه بفهمیم، با توجه به اینکه به هر حال، تاریخ به میلادی باید در دیتابیس ذخیره شود، تابعی برای تبدیل ساعت میلادی به شمسی فعلاً تا این لحظه تعبیه نشده است…
۳- سعی کنید ابتدا خودتان با یک تاریخ فرضی (مثلاً شروع مهلت را پنج دقیقه دیگر تنظیم کنید و پایان را ۲۰ دقیقه دیگر) تست کنید و ببینید همه چیز درست عمل میکند یا خیر؟ ممکن است به این نتیجه برسید که سرور شما یک ساعت جلو کشیده شدن در شش ماه اول سال را پشتیبانی نمیکند… و مجبور باشید به ساعت قدیم ساعت بدهید.
۴- پیشنهاد میشود برای جلوگیری از مشکلات مربوط به جلو کشیده شدن یا نشدن ساعت، شروع مهلت را همیشه یک ساعت زودتر از چیزی که به داوطلبان اعلام کردهاید و پایان مهلت را یک ساعت دیرتر از چیزی که اعلام کردهاید قرار دهید. (البته اجباری نیست)
البته این موضوعات بارها و بارها تست شده است و مشکلی وجود نداشته اما با توجه به تنظیمات برخی سرورهای نه چندان معتبر، ممکن است در مورد «ساعت و دقیقه و ثانیه» کمی تفاوت مشاهده شود.
۵- این بسیار بسیار مهم است که هنگام تعریف یا ویرایش آزمون، کاملاً دقت کنید که اگر تاریخ را «به شمسی» وارد میکنید، گزینه «به شمسی» انتخاب شده باشد. یعنی نکند «به میلادی» انتخاب شده باشد و شما تاریخ شروع و پایان را به شمسی وارد کنید. در این صورت ما فکر میکنیم شما سال ۱۳۹۲ میلادی مد نظرتان بوده و طبیعتاً تاریخ به درستی کار نخواهد کرد…