make a time script shorter

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Treetop

    make a time script shorter

    I used the following script for a site to stop displaying after a date /
    time, but it seems huge. Any ideas on how to make it shorter? There are
    many events in this list.


    function events() {

    var today = new Date();
    var dayarray=new Array("Sun","Mo n","Tue","Wed", "Thu","Fri","Sa t")
    var montharray=new
    Array("Jan","Fe b","Mar","Apr", "May","Jun","Ju l","Aug","Sep", "Oct","Nov","De c
    ")


    document.write( '<table>');
    var event = "Spirit of the Dance - 8:00 pm (<a
    href=ticketorde rform_spiritoft hedance.html>Or der Tickets</a>)";
    var date = new Date("October 30, 2003");
    date.setHours (23);
    date.setMinutes (21);
    date.setSeconds (59);
    var year=date.getYe ar()
    if (year < 1000)
    year+=1900
    var day=date.getDay ()
    var month=date.getM onth()
    var daym=date.getDa te()
    var cdate=dayarray[day]+", "+montharra y[month]+" "+daym+" "+year+" "
    if (today.getTime( ) <= date.getTime()) {
    document.write( '<tr><td valign=top>');
    document.write( cdate);
    document.write( '</td><td>- ');
    document.write( event);
    document.write( '</td></tr>');
    }


    document.write( '</table>');

    }


  • Dr John Stockton

    #2
    Re: make a time script shorter

    JRS: In article <ac322d9e5e3a1c f579182abefa5b0 e62@news.terane ws.com>,
    seen in news:comp.lang. javascript, Treetop <treetop@netfro nt.net> posted
    at Fri, 3 Oct 2003 16:42:30 :-[color=blue]
    >I used the following script for a site to stop displaying after a date /
    >time, but it seems huge. Any ideas on how to make it shorter? There are
    >many events in this list.
    >
    >
    >function events() {
    >
    >var today = new Date();
    >var dayarray=new Array("Sun","Mo n","Tue","Wed", "Thu","Fri","Sa t")[/color]
    [color=blue]
    >var dayarray=["Sun","Mon","Tu e","Wed","Thu", "Fri","Sat"][/color]
    [color=blue]
    >var montharray=new
    >Array("Jan","F eb","Mar","Apr" ,"May","Jun","J ul","Aug","Sep" ,"Oct","Nov","D ec
    >")
    >
    >
    >document.write ('<table>');
    >var event = "Spirit of the Dance - 8:00 pm (<a
    >href=ticketord erform_spiritof thedance.html>O rder Tickets</a>)";
    >var date = new Date("October 30, 2003");
    > date.setHours (23);
    > date.setMinutes (21);
    > date.setSeconds (59);[/color]

    var date = new Date(2003,9,30, 23,21,59)
    var date = new Date("2003/10/31") // near enough ?
    var date = new Date("2003/10/30 23:21:59")
    [color=blue]
    >var year=date.getYe ar()
    >if (year < 1000)
    >year+=1900[/color]

    var year = 1900 + date.getYear()% 1900 // < AD 3800
    [color=blue]
    >var day=date.getDay ()
    >var month=date.getM onth()
    >var daym=date.getDa te()
    >var cdate=dayarray[day]+", "+montharra y[month]+" "+daym+" "+year+" "
    >if (today.getTime( ) <= date.getTime()) {
    >document.write ('<tr><td valign=top>');
    >document.write (cdate);
    >document.write ('</td><td>- ');
    >document.write (event);
    >document.write ('</td></tr>');
    > }[/color]

    if (today <= date) with (date)
    document.write( '<tr><tc valign=top>, dayarray[getDay()], ', ',
    montharray[getMonth()], ' ', getDate(), ' ',
    1900 + date.getYear()% 1900, '<\/td><td>- ', event, '<\/td><\/tr>')[color=blue]
    >
    >
    >document.write ('</table>');
    >
    >}[/color]

    After testing, then shorten variable names.

    For World-Wide Web use, M D Y is silly; use Y M D. Consider LZ, or
    equivalent, to add leading zero to getDate().

    There is no point in calculating anything that will not get used; test
    the date earlier.



    To shorten repetitive work, use a function with parameters. For
    example, function WriteTable(Evnt , Till) ; today, dayarray,
    montharray can be global. If the Evnt always has a similar URL,
    parameterise the variable part of that, too :-

    WT("Spirit of the Dance - 8:00 pm",
    "spiritofthedan ce", "2003/10/30 23:21:59")

    Then you can, for a slight gain on a long schedule, supply those as
    elements of an array :

    var Data = [
    ["Spirit of the Dance - 8:00 pm",
    "spiritofthedan ce", "2003/10/30 23:21:59"],
    ["Mozart - 15:30", "wam", "2003/12/31 11:45"], ... ... ]



    Read the FAQ, thoughtfully.



    Note that the event occurs at a specific time and location; you want to
    prevent ticket ordering at that absolute time or a fixed offset from
    that, independently of the orderer's location. The chronologically
    retarded, such as Alaskans, should not be able to take undue advantage;
    the advanced Maoris should not be handicapped.

    It is still possible, I think, to be using a computer
    in the VIP lounge at LHR, and to arrive in or near NYC
    at an earlier local time.



    NOTE to all, prompted by above :

    <URL:http://www.merlyn.demo n.co.uk/js-date5.htm#DDTA> is much changed;
    it could do with a functionality test on later browsers, a correctness
    check, and any suggestions for reasonable code reduction. I think the
    page displays all relevant code, except imports.

    --
    © John Stockton, Surrey, UK. ?@merlyn.demon. co.uk Turnpike v4.00 IE 4 ©
    <URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang. javascript
    <URL:http://www.merlyn.demo n.co.uk/js-index.htm> JS maths, dates, sources.
    <URL:http://www.merlyn.demo n.co.uk/> TP/BP/Delphi/JS/&c., FAQ topics, links.

    Comment

    Working...