I made a script in JavaScript to calculate how long it takes until a certain date.
Do you find it user-friendly enough? Is the code correct?
var object = "object"
function formatDate(date) { // get the date in proper format
var d = new Date(date),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
monthT = month;
yearT = year;
dayT = day;
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month, day].join('-');
}
var time = new Object()
time.until = function(date, start){
if (typeof start === 'undefined'){
var currentTime = formatDate(new Date())
}else {currentTime == start}
var year = date.substring(0, 4);
var year = year - 1 + 1; // now it isn\'t a string anymore :D
var month = date.substring(5, 7)
var month = month - 1 + 1;
var day = date.substring(8, 10);
var day = day -1 + 1; // make it into a number in stead of string
var curMonth = monthT
var curDay = dayT
var curYear = yearT
var curDay = curDay - 1 + 1;
var curMonth = curMonth - 1 + 1;
var curYear = curYear - 1 + 1;
var monthBefor = month - 1;
var difDay = day - curDay;
var difMonth = month - curMonth;
var difWeek = 0;
if(difDay < 0) {
difMonth--;
if(monthBefor === 0){monthBefor = 12};
switch(monthBefor) {
case 1:
case 3:
case 5:
case 8:
case 7:
case 10:
case 12:
difDay = difDay + 31;
break;
case 4:
case 6:
case 9:
case 8:
case 11:
difDay = difDay + 30;
break;
case 2:
if(year % 4 == 0) {difDay = difDay + 29}else{difDay = difDay + 28}
break;
default:
console.log("error")
break;
}
}
if(difMonth < 0){
difMonth += 12;
year--;
}
while(difDay >= 7) {difDay = difDay - 7; difWeek++; }
var difYear = year - curYear;
return {days: difDay, weeks: difWeek, months: difMonth, years: difYear};
},
time.today = function(object){
var today = formatDate(new Date);
if(object == "object"){
var obj = {};
var yearO = parseInt(today.substring(0,4))
var monthO = parseInt(today.substring(5,7))
var dayO = parseInt(today.substring(8,10))
var obj = {_when: "today", year: yearO, month: monthO, day: dayO}
return obj;
}else{
return today;
}
};
time.tomorrow = function(object){
var tomorrow = formatDate(new Date);
if(object == "object"){
var obj = {};
var yearO = parseInt(tomorrow.substring(0,4))
var monthO = parseInt(tomorrow.substring(5,7))
var dayO = parseInt(tomorrow.substring(8,10)) + 1;
var obj = {_when: "tomorrow", year: yearO, month: monthO, day: dayO}
return obj;
}else{
var tomorrowBegin = tomorrow.substring(0,8)
var tomorrowEnd = parseInt(dayT) + 1;
tomorrow = tomorrowBegin + tomorrowEnd
return tomorrow;
}
}
Examples:
time.until("2015-09-08") // returns an object with
{days: 6,
months: 1,
weeks: 1,
years: 0}
time.today() // returns the current date in YYYY-MM-DD format
time.tomorrow() // returns the date of the next day in YYYY-MM-DD format
time.today(object) // returns the current date in an object, like
{_when: "today",
day: 26,
month: 7,
year: 2015}
time.tomorrow(object) // returns the date of the next day in an object, like
{_when: "tomorrow",
day: 27,
month: 7,
year: 2015}