1

okay I have a timer script that counts down and is fed a date in this format:

var year="2015";    

var month="11";      

var day="18"; 

I am trying figure out how to dynamically populate the above variables so that the timer resets every wed at 8pm. So on wed 18, 2015 those variables would dynamically change to:

var year="2015";

var month="11";      

var day="25";

and keep going or would it just be better to have a user input the date in a form to populate those variables with the correct info. I would rather it all be automatic though, if possible of course.

Script that uses the variables:

/*
Count down until any date script-
By JavaScript Kit (www.javascriptkit.com)
Over 200+ free scripts here!
Modified by Robert M. Kuhnhenn, D.O. 
on 5/30/2006 to count down to a specific date AND time,
on 10/20/2007 to a new format, and 1/10/2010 to include
time zone offset.
*/

var current="Citadel has reset!";    //-->enter what you want the script to display when the target date and time are reached, limit to 20 characters

var year="2015";    //-->Enter the count down target date YEAR

var month="11";      //-->Enter the count down target date MONTH

var day="18";       //-->Enter the count down target date DAY

var hour="22";      //-->Enter the count down target date HOUR (24 hour clock)

var minute="00";    //-->Enter the count down target date MINUTE

var tz=-5;        //-->Offset for your timezone in hours from UTC (see http://wwp.greenwichmeantime.com/index.htm to find the timezone offset for your location)

//    DO NOT CHANGE THE CODE BELOW!
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

function countdown(yr,m,d,hr,min){

	theyear=yr;themonth=m;theday=d;thehour=hr;theminute=min;

	var today=new Date();

	var todayy=today.getYear();

	if (todayy < 1000) {todayy+=1900;}

	var todaym=today.getMonth();

	var todayd=today.getDate();

	var todayh=today.getHours();

	var todaymin=today.getMinutes();

	var todaysec=today.getSeconds();

	var todaystring1=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec;

	var todaystring=Date.parse(todaystring1)+(tz*1000*60*60);

	var futurestring1=(montharray[m-1]+" "+d+", "+yr+" "+hr+":"+min);

	var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60));

	var dd=futurestring-todaystring;

	var dday=Math.floor(dd/(60*60*1000*24)*1);

	var dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1);

	var dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);

	var dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);

	if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=0){

		document.getElementById('count2').innerHTML=current;

		document.getElementById('count2').style.display="inline";

		document.getElementById('count2').style.width="390px";

		document.getElementById('dday').style.display="none";

		document.getElementById('dhour').style.display="none";

		document.getElementById('dmin').style.display="none";

		document.getElementById('dsec').style.display="none";

		document.getElementById('days').style.display="none";

		document.getElementById('hours').style.display="none";

		document.getElementById('minutes').style.display="none";

		document.getElementById('seconds').style.display="none";

		document.getElementById('spacer1').style.display="none";

		document.getElementById('spacer2').style.display="none";

		return;

	}else {

		document.getElementById('count2').style.display="none";

		document.getElementById('dday').innerHTML=dday;

		document.getElementById('dhour').innerHTML=dhour;

		document.getElementById('dmin').innerHTML=dmin;

		document.getElementById('dsec').innerHTML=dsec;

		setTimeout("countdown(theyear,themonth,theday,thehour,theminute)",1000);

	}

}

1
  • Show the timer script you are currently sending the year, month and day arguments to. Commented Nov 16, 2015 at 2:02

1 Answer 1

1

You can use JavaScript's Date object for this.

When your timer is triggered you could do the following:

var date = new Date(year, month, day);

date.setDate(date.getDate() + 7);

year = date.getFullYear().toString();
month = date.getMonth().toString();
day = date.getDate().toString(); //Note: not date.getDay() even though that seems more correct.

You could also just use a Date object in the first place instead of the three separate string variables to avoid creating/parsing/converting between different types.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for your time. I will do that!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.