Skip to content

Instantly share code, notes, and snippets.

@jackarmley
Created July 19, 2015 10:42
Show Gist options
  • Save jackarmley/a4e2de1a8ab55d5e1178 to your computer and use it in GitHub Desktop.
Save jackarmley/a4e2de1a8ab55d5e1178 to your computer and use it in GitHub Desktop.
See you next tuesday, a helpful script for letting you know what day of what week is [x] days from today
/**
* See you next tuesday,
* a helpful script for letting
* you know what day of what week is [x]
* days from today
* @author Jack Armley
* @param daysNo {interger} - Number of days from today to grab
* @param debug {boolean} [false] - Output a more verbose message
**/
var seeYouNextTuesday = function(daysNo,debug){
// Set some vars and that, yeah
var days = [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
];
var currDate = new Date();
var currDay = currDate.getUTCDay();
var seeYouIn = daysNo;
var i = 0;
var j = currDay;
var weeks = 0;
var weekPhrases = [
{message:'next week'},
{message:'week after next'}
];
var message = '';
// Increment i by 1 while it is less than
// [seeYouIn]. Also, loop through the days array
// from the current day; when the current day is
// greater than days.length, reset to zero and start
// from the beginning of the days array again.
while( i < seeYouIn ){
i++;
if(j < days.length - 1){
j++;
}else{
j = 0;
weeks++;
}
}
// Return a message if the value of
// daysNo isn't 0
if(daysNo !== 0){
// If the debug parameter has been set to true,
// return a super-long message
if(debug){
message += daysNo;
message += ' day';
if(daysNo !== 1){
message += 's';
}
message += ' from today (' + days[currDay] + ')';
message += ' is a ' + days[j];
message += ', ';
if(weeks < weekPhrases.length){
message += weekPhrases[weeks].message;
}else{
message += 'in ' + weeks + ' weeks';
}
}
// Else, return simply:
// [target day], [weeks]
else{
message += days[j];
message += ', ';
if(weeks < weekPhrases.length){
message += weekPhrases[weeks].message;
}else{
message += 'in ' + weeks + ' weeks';
}
}
return message;
}
// Else, throw an error
else{
throw new Error('Oops! Try a number of days greater than ' + daysNo);
}
};
/**
* Demo
**/
console.log( seeYouNextTuesday(1) );
console.log( seeYouNextTuesday(10) );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment