SalmanAA

نوشته های سلمان عرب عامری

SalmanAA

نوشته های سلمان عرب عامری

۲ مطلب با موضوع «programming :: javascript» ثبت شده است

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

/(13|14)([0-9][0-9])\/(((0?[1-6])\/((0?[1-9])|([12][0-9])|(3[0-1])))|(((0?[7-9])|(1[0-2]))\/((0?[1-9])|([12][0-9])|(30))))/

نمونه استفاده در جاوا اسکریپت:

    var str = "1393/11/23";
    //look for "1393/10/10"
    var patt = /(13|14)([0-9][0-9])\/(((0?[1-6])\/((0?[1-9])|([12][0-9])|(3[0-1])))|(((0?[7-9])|(1[0-2]))\/((0?[1-9])|([12][0-9])|(30))))/g;
    var result1 = patt.test(str);
console.log(result1);
str="1393/13/10";
    var result2 = patt.test(str);
console.log(result2);

البته توجه کنید که در این عبارت یک مشکل وجود داره. اون هم اینکه سال کبیسه محاسبه نمی شه و برای اسفند همواره تا 30 رو قبول می کند. بنابراین باید یک کد اضافه هم بگذاریم که اگر تاریخ مورد قبول بود، با استخراج ماه و سال و روز اگر تاریخ طبق دستورات قبل معتبر بود و ماه 12 بود، و  سال کبیسه آنگاه 30 روز قابل قبول باشد و در غیر اینصورت 29 روز قبول کند. بنابراین در ادامه کد زیر را می آوریم:

    if (result1) {
        var pos = str.indexOf('/');
        var year = str.substring(0,pos);
        var nextPos = str.indexOf('/',pos+1);
        var month = str.substring(pos+1,nextPos);
        var day = str.substring(nextPos+1);
        if(month==12 && (year+1) % 4!=0 && day==30) { // kabise = 1379, 1383, 1387,... (year +1) divides on 4 remains 0
            result = false;
    }

کد کامل برنامه :

function checkShamsi(str) {
    var patt = /(13|14)([0-9][0-9])\/(((0?[1-6])\/((0?[1-9])|([12][0-9])|(3[0-1])))|(((0?[7-9])|(1[0-2]))\/((0?[1-9])|([12][0-9])|(30))))/g;
    var result = patt.test(str);
    if (result) {
            var pos = str.indexOf('/');
            var year = str.substring(0,pos);
            var nextPos = str.indexOf('/',pos+1);
            var month = str.substring(pos+1,nextPos);
            var day = str.substring(nextPos+1);
            if(month==12 && (year+1) % 4!=0 && day==30) { // kabise = 1379, 1383, 1387,... (year +1) divides on 4 remains 0
                result = false;
    }   
    return result;
}

نحوه استفاده:

var myvalue="1393/12/30";
if (!checkShamsi(myvalue)) {
    alert("تاریخ وارد شده معتبر نیست!");
    return;
}

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

1- اول کتابخونه رو دانلود کنید. دانلود

2- در فایل اچ تی ام ال خودتون کتابخونه رو اضافه کنید:

<script src="wordifyfa.js"></script>

3- در کد جاوا اسکریپتتون از کتابخونه استفاده کنید.

 var a = 193390;
 var b = wordifyfa(a);
alert(b);

این کتابخانه برای نمایش به ریال، تبدیل ریال به تومان و نمایش اعداد منفی هم توابعی داره و حداکتر تا 999999999999999 رو پشتیبانی می کنه. از همه برنامه نویسان وطنی دعوت می کنم در توسعه این کتابخانه مشارکت کنند.

آدرس مخزن کد: https://github.com/SalmanAA/wordifyfa