یک اسکریپت کاربردی و یک سوال پیچیده؟؟؟؟

no.love

Member
سلام .
یک اسکریپت پیدا کردم که تاریخ میلادی رو بصورت روز و ساعت و دقیقه و ثانیه نشان میدهد.
با استفاده از این اسکریپت میتوانید فرصت باقی ماندتونو تا تاریخی که انتخاب میکنید مشخص کنید.(تاریخ حتما باید میلادی باشد)
این اسکریپت آنقدر حرفه ای نوشته شده که اگر به تاریخ انتخابی نزدیک شوید با رنگ زرد و اگر به تاریخ برسید با رنگ قرمز و اگر آن را رد کنید پیام مهلت تمام شده است را نشان میدهد.(راهنما:برای راه اندازی این اسکریپت نیاز به یک jquery.js دارید.)
کد:
<script type="text/javascript">
    $(document).ready(function(){
        var str = "date"; //نام فیلدی که قرار است تاریخ از آن خوانده شود 
        var a=0;
        var headers = $("table.ms-listviewtable:first> tbody> tr:first th").get();
        $.each(headers, function(i,e){
            x = $(e).contents().find("a[title*='"+str+"']").length;
            a = x > 0 && i > a ? i : a;
        });
        var today = new Date();
        today = Date.parse(today)/1000;
        var dArray = $("table.ms-listviewtable:first> tbody> tr:gt(0)").find(">td:eq("+a+")").get()
        $.each(dArray, function(i,e){
            var d1 = Date.parse($(e).text())/1000;
            var time = '<span style="color:#ff0000">مهلت تمام شده است</span>';
            if(d1-today > 0) { 
                // calculate days, hours, minutes and seconds
                var dd = (-today)/86400; 
                var dh = (dd-Math.floor(dd))*24;
                var dm = (dh-Math.floor(dh))*60;
                var ds = (dm-Math.floor(dm))*60;
                // build display string
                time = ((Math.floor(dd) > 0 ? Math.floor(dd) +"روز و " : "")+
                        (Math.floor(dh) > 0 ? Math.floor(dh)+" ساعت و" : "")+
                        (Math.floor(dm) > 0 ? Math.floor(dm)+"دقیقه و  " : "")+
                        (Math.floor(ds) > 0 ? Math.floor(ds)+"ثانیه" : ""));
                // highlight active auctions
                var isEndingSoon = (((Math.floor(dd) + Math.floor(dh)) <= 0) && (Math.floor(dm) < 15)) ;
                if(isEndingSoon) { time = '<span style="color:#ffcc00">' + time + '</span>'; }
                else { time = '<span style="color:#005a04">' + time + '</span>'; }
            }
            // write out text value as html
            $(e).text('<span style="font-weight:bold">'+time+'</span>');
            $(e).html($(e).text());
        });
    });
</script>
خوب حالا میرم سراغ سوالم.
من میخوام با استفاده از قابلیت این اسکریپت به جای زمان" تاریخ شمسی" رو نشون بدم.
(یعنی اسکریپتی که تاریخ میلادی رو به شمسی تبدیل کنه و اونو تو فیلد مورد نظر نشون بده.)

از دوستان حرفه ای در این زمینه تقاضا کمک فورِِِِِِِِِِِِِِِِِِِِِِِِِِِِِِِِِیییییی دارم.
 
آخرین ویرایش:

no.love

Member
شما میتونین برای تبدیل تاریخ از کدهای جاوااسکریپت که در آدرس زیر هست استفاده و تاریخ های تبدیل یافته رو در کد بالا استفاده کنین.

http://www.fourmilab.ch/documents/calendar
سلام ممنون از راهنمایتون.:rose:
اگر اشتباه نکم توی یه سواله دیگه همین سایتو به من معرفی کردید ولی من چیزی پیدا نکردم .
یعنی من یه کد میخوام که تاریخ میلادی(که بصورت زمان نوشته میشه در اسکریپت بالا) رو به صورت تاریخ شمسی(که بصورت تاریخ نوشته شود سال/ماه/روز) نشون بده.
داخل پرانتز بگم که به هیچ عنوان امکان تغییر نوع تاریخ نیست یعنی فیلد تاریخ حتما باید میلادی باشه.
یعنی توی اسکریپت باید new date() وجود داشته باشه.
اگه امکان نوشتن این کد رو دارید ممنون میشم کمکم کنید این موضوع خیلی وقته سد راهم شده.
بازم از راهنماییتون ممنونم.
 

mazoolagh

Active Member
باید به جاوااسکریپت مسلط باشین. من فقط میتونم راهنمایی کلی کنم:

1- تو همون صفحه که معرفی کردم لینک دانلود اسکریپت های مورد نیاز هست. فقط به اسکریپتها نیاز دارین (calendar.js - astro.js)

2- این اسکریپت ها رو در بصورت رفرنس در صفحه تون تعریف کنین

3- اساس کار اسکریپت بر مبنای julian day هست و تبدیل تاریخ فرضا میلادی به خورشیدی مستقیم انجام نمیشه بلکه تاریخ میلادی اول به جولین تبدیل میشه و بعد جولین به خورشیدی

4- سورس همون صفحه رو مطالعه کنین کاملا روش کار دستتون میاد. برای راهنمایی در فایل calendar.js توابع jd_to_gregorian و gregorian_to_jd و jd_to_persian و persian_to_jd رو ببینین.

حالا میتونین اسکریپت بالایی رو با چند تغییر جزیی برای کار خودتون استفاده کنین
 

no.love

Member
بازم سلام به دوست عزیز mazoolagh .
به علت حرفه ای نبودنم در زمینه برنامه نویسی هنوز بعضی جاها واسم علامت سواله.http://forum.majidonline.com/showthread.php?t=177273
این سایتی که شما پیشنهاد کردید بسیار سایت خوبیه و خیلی بهم کمک کرد ولی مشکل اینجاست که تاریخ ها در فیلد قرار دارند.
من یک تاریخ میلادی دارم که بصورت تکس در صفحه قرار گرفته میخوام با استفاده از اسکریپتی که در بالا قرار دادم و فرمول هایی که شما پیشنهاد کردید نمایش تاریخ میلادی را به شمسی(خورشیدی) تبدیل کنم.
سوالی که الان واسم پیش اومده اینه که چه جوری میتونم تاریخ رو از صفحه بخونم و به اون چیزی که میخوام تبدیلش کنم.
مثله همیشه از راهنمایی های خوبتون ممنونم.
 

mazoolagh

Active Member
اگر درست منظورتون رو متوجه شده باشم الآن مشکل این هست که چطوری به یک المان صفحه وب دسترسی داشته باشین.

اگر همین طور هست : فرضا اگر متن شما داخل تگ span یا div باشه بهش یک id بدین:
کد:
<span id='TXTID' style='...'>....</span>

حالا میتونین همیشه با متد getElementById بهش دسترسی پیدا کنین:
کد:
document.getElementById('TXTID')

و پراپرتی innerText هم که مشخص هست به چی اشاره داره:
کد:
document.getElementById('TXTID').innerText
 

جدیدترین ارسال ها

بالا