View Full Version : درخواست برنامه ی معتبر بودن تاریخ ( جاوااسکریپت)
sAsAn.K
سه شنبه 21 آبان 1387, 13:35 عصر
سلام دوستان .
یه برنامه ی جاوااسکریپت ساده میخوام که یه تاریخ شمسی رو به صورت زیر و شرایط زیر بگیره و بگه تاریخ وارد شده معتبره یا نه .
ممنون.
اگر سال 4 رقمی وارد شد باید بالای 1350 باشه ، اگر 2 رقمی وارد شد باید بالای 50 باشه .
هر سال 12 ماه .
از ماه 1 تا 6 ، هر ماه 31 روز .
از ماه 7 تا 11 ، هر ماه 30 روز .
و ماه 12 ، 29 روز هست .
باز هم ممنون .
:لبخندساده:
امید امرایی
سه شنبه 21 آبان 1387, 13:48 عصر
ببخشید دوست عزیز.
اینجا کارگاه سفارش کد نیست.
ممنون از توجه شما
sAsAn.K
سه شنبه 21 آبان 1387, 13:59 عصر
چرا ؟
آقا من نتونستم برات پ.خ بفرستم ، پست هام باید بالای 20 باشه .
میشه برنامه رو برام پ.خ. کنی ؟
ممنون میشم .
امید امرایی
سه شنبه 21 آبان 1387, 14:07 عصر
بنده عرض می کنم اینجا جای سفارش کد نیست شما می گید براتون پ.خ کنم ؟
شما باید تا یه جایی پیش رفته باشید و اشکالاتتون رو اینجا بیان کنید .
sAsAn.K
سه شنبه 21 آبان 1387, 14:11 عصر
والا من فردا باید چند تا برنامه ی C++ تحویل بدم ، روی اونا دارم کار می کنم .
جدا وقت اینو ندارم ، چون اونا مهم ترن .
ولی خوب اینم باید تحویل بدم .
حالا کمک می کنید ؟
--------
با indexOf و lastIndexOf باید باشه ( برای پیدا کردن عدد بعد از کاراکتر / ) .
متوجه شدید ؟
ضمنا تاریخ باید اینطوری باشه : YYYY/MM/DD یا اینطوری YY/MM/DD
sAsAn.K
سه شنبه 21 آبان 1387, 15:19 عصر
از این دستور ها مجاز نیستم استفاده کنم .
از indexOf ، lastIndexOf ، substring و اینجور دستور ها .
eAmin
سه شنبه 21 آبان 1387, 16:20 عصر
سلام.
استفاده از RegEx به صرفه تر هست، البته راههای دیگه هم وجود داره ولی خوب باز هم عبارات باقاعده پیشنهاد می شه.
http://barnamenevis.org/forum/showthread.php?p=613199
eAmin
سه شنبه 21 آبان 1387, 16:47 عصر
باید از IsMach اگه اشتباه نکنم استفاده کنید
ببنید اصلا تابع یا متدی به نام IsMatch در جاوااسکریپت وجود نداره، این متد فقط در #C کاربرد داره، در Javascript از match استفاده می شه، البته متدهای دیگه هم وجود داره قبیل test,exec و ...
sAsAn.K
سه شنبه 21 آبان 1387, 17:40 عصر
دوستان این برنامه رو بدون استفاده از این دستوراتی که گفتید میخوام .
فقط با همونایی که گفتم .
eAmin
سه شنبه 21 آبان 1387, 17:56 عصر
من سعی می کنم جاوا اسکریپت رو هم مثل #C بنویسم و به خاطر همین بود.
بله برای این کار وقتی از ismatch استفاده می کنید بایستی name space text.reqularex رو البته اسمش رو دقیق ننوشتم بیارید و بعد از این متد برای چک کردن کاراکتر ها طبق عبارت باقائده استفاده کنید و شی مورد نظر رو هم بنویسید مثلا کدوم textbox.
میشه یه مثال جاوا اسکریپت بنویسید؟
به این آدرس برو، ولی بهتره که تاپیک این دوستمون رو منحرف نکنیم.
http://www.w3schools.com/js/js_obj_regexp.asp
sAsAn.K
سه شنبه 21 آبان 1387, 18:00 عصر
دوستان خواهشا با هم بحث راه نندازید ، کار منو اگه ممکنه راه بندازید .
من میخوام از ورودی تاریخ به صورت YYYY/MM/DD و یا YY/MM/DD گرفته شه ، بعد با شرط هایی که توی پست اول گفتم چک بشه که تاریخ درسته یا نه .
این دستور ها چیه میگید ؟! فقط با دستور های indexOf ، lastIndexOf و subString میشه اینکارو کرد ، درسته ؟
خواهش می کنم زود ، برای فردا میخوام .
sAsAn.K
سه شنبه 21 آبان 1387, 18:36 عصر
اینم راهش ، دیگه بنویسید ! ، البته خواهش می کنم ، شرمنده چون عجله دارم ، برای فردا صبح میخوام .
تاریخ گرفته شه ، بخش های سال و ماه و روز جدا شه ( با دستور indexOf و lastIndexOf و sunString ).
بعدشم هم با دستور if مقایسه شه با اون شرط هایی که گفتم و مناسب اونا پیغام بده ، متوجهید ؟
ممنون میشم سریع !
امید امرایی
سه شنبه 21 آبان 1387, 22:09 عصر
اینم یه کامیون indexOf
function isValidDate(StringDate){
strDate = new String(StringDate);
if(strDate.indexOf('/') == 2 || strDate.indexOf('/') == 4){
if (strDate.substr(strDate.indexOf('/') + 1).indexOf('/') != 2) {
alert('Date format should be XXXX/XX/XX or XX/XX/XX');
return;
}
var year = new String(strDate.substr(0, strDate.indexOf('/')));
var month = strDate.substr((strDate.indexOf('/') + 1), 2);
var day = strDate.substr((strDate.indexOf('/') + 4), 2);
if (year.length == 4 && year < 1350) alert('Year shoud be more or equal to 1350');
else if (year.length == 2 && year < 50) alert('Year shoud be more or equal to 50');
else if(month > 12) alert('Month should be less than 12');
else if(month < 1) alert('Month should be greater that 1');
else if(day < 0) alert('Day should be between 1 and 31');
else if((month >= 1 && month <= 6) && day > 31) alert('Day should be between 1 and 31');
else if((month > 6 && month <= 11) && day > 30) alert('Day should be between 1 and 30');
else if((month == 12) && day > 29) alert('Day should be between 1 and 29');
}
else
alert('Year should be as XXXX or XX');
}
eAmin
چهارشنبه 22 آبان 1387, 09:09 صبح
سلام.
منم اینطوری نوشتمش، ولی همچنان کد جناب kassit پیشنهاد می شه، از من یه خرده ایراد داره!
var date = "1387/12/31",
year = date.substring(2,4),
month = date.substring(7,5),
day = date.substring(10,8),
chyear = (date.indexOf("/") == 4 && (year >= 50 || year >= 99)), // min=50, max=99
chmonth = (date.indexOf("/") == 4 && date.lastIndexOf("/") == 7) && (month >= 01 && month <= 12), //min=01, max=12
chday = date.lastIndexOf("/") == 7 && (day >= 01 && day <= 31); // min=01, max=31
if (chyear && chmonth && chday) {
document.write("ok!, date is: " + date);
} else {
document.write("error, date format is not supported.");
}
sAsAn.K
یک شنبه 26 آبان 1387, 15:11 عصر
چرا پاک کردید پست ها رو ؟!
مگه چه مشکلی داشتن ؟!
raravaice
یک شنبه 26 آبان 1387, 15:16 عصر
چرا پاک کردید پست ها رو ؟!
مگه چه مشکلی داشتن ؟!sAsAn.K (http://barnamenevis.org/forum/member.php?u=16300) عزیز سئوال شما به وضوح پاسخ داده شده اگر سئوال دیگری که دارای ارزش فنی میباشد و نه صرفا یک "Order" ، دارید لطفا با ایجاد یک تاپیک مجزا مطرح نمایید.
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.